2013-02-13 95 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 
    } 
}