2015-11-19 158 views
1

這就是問題所在:
創建一個IsoTri應用程序,該應用程序提示用戶輸入等腰三角形的大小,然後用該多行顯示三角形。在Java中使用循環繪製等腰三角形

實施例:4

* 
** 
*** 
**** 
*** 
** 
* 

的IsoTri應用程序代碼應包括printChar(int n, char ch)方法。這種方法會將n次打印到屏幕上。

這是我到目前爲止有:

public static void main(String[] args) { 
     int n = getInt("Give a number: "); 
     char c = '*'; 
     printChar(n, c); 


    } 

    public static int getInt(String prompt) { 
     int input; 

     System.out.print(prompt); 
     input = console.nextInt(); 

     return input; 
    } 

    public static void printChar(int n, char c) { 
     for (int i = n; i > 0; i--) { 
      System.out.println(c); 
     } 

    } 

我不知道如何得到它打印的三角形。任何幫助表示讚賞。

+1

提示:例如打印* ,然後**,然後***,然後**,然後* –

+0

這裏是你的答案http://stackoverflow.com/questions/22681510/regarding-a-star-pattern –

+0

@KumarSaurabh他必須實現'printChar(int n,char ch)' –

回答

1

您需要循環兩個嵌套:

的所有 printChar是錯誤的
public static void printChar(int n, char c) { 
    // print the upper triangle 
    for (int i = 0; i < n; ++i) { 
     for (int j = 0; j < i + 1; ++j) { 
      System.out.print(c); 
     } 
     System.out.println(); 
    } 

    // print the lower triangle 
    for (int i = n - 1; i > 0; --i) { 
     for (int j = 0; j < i; ++j) { 
      System.out.print(c); 
     } 
     System.out.println(); 
    } 
} 
+0

非常感謝! – ch1maera

2

第一。它將以新行打印每個*。您需要打印*字符n次然後換行。例如。

public static void printChar(int n, char c) { 
    for (int i = n; i > 0; i--) { 
     System.out.print(c); 
    } 
    System.out.println(); 
} 

,鑑於後,必須使用printChar我會推薦2 for循環一個一個增加一個deincrementing

public static void main(String[] args) { 
    int n = getInt("Give a number: "); 
    char c = '*'; 

    // first 3 lines 
    for (int i = 1; i < n; ++i) 
     printChar(i, c); 

    // other 4 lines 
    for (int i = n; i > 0; --i) 
     printChar(i, c); 
} 
0

有點遞歸解決方案:

private static String printCharRec(String currStr, int curr, int until, char c) { 
    String newStr = ""; 
    for (int i = 1; i < curr; i++) 
     newStr += c; 
    newStr += '\n'; 
    currStr += newStr; 

    if (curr < until) { 
     currStr = printCharRec(currStr, curr+1, until, c); 
     currStr += newStr; 
    } 

    return currStr; 
}