2013-02-13 100 views
-3

這段代碼有什麼問題? 它似乎沒有打印出任何東西如何繪製一個ASCII直角三角形?

public void RTriangle(char appearance, int size) 
    { 
     for (int i = 0; i < size; i++) 
     { 
      for (int j = 0; j < i; j++) 
      { 
       System.out.println(appearance); 
      } 
      System.out.println(); 
     } 
     System.out.println(); 
    } 
+1

你在什麼時候追加空格?這裏有兩個字符 - ''和'*'。 – Makoto 2013-02-13 23:26:02

回答

1
public void print(final char appearance, final int size){ 
    for (int i = 1; i <= size; i++) { 
     for (int j = size - i; j >0; j--) 
      System.out.print(" "); 
     for (int k = i; k > 0; k--) 
      System.out.print(appearance); 
     System.out.println(); 
    } 
} 

的指示,應該做的。告訴我你是否想要我解釋邏輯。

+0

我會*愛*給你解釋邏輯。 – Makoto 2013-02-13 23:33:21

+0

說明會很好 – aloobhalooo 2013-02-13 23:35:51

+0

我儘可能地把它和現實世界聯繫起來。你從1開始,表示第一行。從那裏,你可以清楚地看到它的大小的行數。然後,從大小開始,減去行數(第一行有一顆星,第二行有兩顆星)。你繼續倒計時直到你剩下0打印。從那裏,你重複相同的星星數你的方式,直到你不必再打印。 – 2013-02-13 23:36:18

0

我認爲你必須有你的指數權。例如:

for (int i = 0 ; i < size ; i++) { // count of rows 
    for (int j = 0 ; j < size ; j++) 
     System.out.print ((i < j) ? " " : appearance); 
    System.out.println(); 
} 
0
public void RTriangle(char appearance, int size) 
{ 
    for(int i=0;i<size;i++) 
    { 
     for(int j=0;j<size;j++) 
     { 
      if((size-j)<i) // the amount of * depents on i and it goes from the right to the left so use size -j 
       System.out.print(""+appearance); //""+ turns the char into a string 
     } 
     System.out.println(); //append a line when your first line is done 
    } 
}