2013-10-02 36 views
0

我很难试着让这段代码从5个空格开始,减少到0个空格,每行减去一个空格。非常基本的Java嵌套for循环问题

public class Prob3 { 

    public static void main(String[]args) { 

     for (int x=1; x<=5; x++) 
     { 
      for (int y=5; y>=1; y--) 
      { 
      System.out.print(" "); 
      } 
     System.out.println(x); 
     } 
    } 
} 

电流输出是(应该是5个空格):

 5 
     4 
     3 
     2 
     1 

我很高兴到目前为止的进展,但我需要得到的东西接近这个:

 1 
     2 
    3 
    4 
5 

我觉得我很亲密

+0

它这个功课? – Zac

+0

@Seb家庭作业在SO上被很好的接受,因为OP自己尝试过,并且已经表明了他/她在这个问题上的尝试。 –

+2

没关系!经过几个小时的忙碌之后,我才得到它。 Wohoo!编辑:谢谢大家的快速回复,第一次使用S.O. –

回答

6

改变你的内循环为:

for (int y=5; y > x; y--) 

你会发现在每行上的空格的数量的图案:

  • 行1 = 4空格
  • 行2 = 3空格
  • 行3 = 2空格
  • 等等..

所以,模式是,空白的数量是5 - rowNumber。在你的代码中,外层循环表示rowNumber。内循环应运行5 - rowNumber次。这就是为什么条件应该是y > rowNumber,即y > x

+0

实际上内部循环条件应该是'y> x'。 –

+1

@cacho是的,修复它。谢谢:) –

+0

哦,好的!现在我可以看到它! +1 –

1

你的内部循环改成这样:

for (int y=5; y>x; y--) 

全码:

for (int x=1; x<=5; x++) 
{ 
    for (int y=5; y>x; y--) 
      System.out.print(" "); 

    System.out.println(x); 
} 
0

内for循环的表述应该是:

public class Prob3 { 
    public static void main(String[]args) { 
     for (int x = 0; x < 5; x++) { 
      for (int y = (4 - x); y > 0; y--) { 
       System.out.print(" "); 
      } 
      System.out.println(x + 1); 
     } 
    } 
} 

的问题是,你在开始每次5次。内循环中的(4-x)使最后一个数字(5)有0个前导空格。