非常基本的Java嵌套for循环问题

时间:2013-10-02 20:54:39

标签: java loops for-loop

我很难让这段代码从5个空格开始,减少到0个空格,每行减去一个空格。

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

我觉得我很亲密

3 个答案:

答案 0 :(得分:6)

将内循环更改为:

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

您会注意到每行上的空格数量的模式:

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

因此,模式是,空格的数量为5 - rowNumber。在您的代码中,外部循环表示rowNumber。内循环应该运行5 - rowNumber次。这就是条件应为y > rowNumber的原因,即y > x

答案 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);
}

答案 2 :(得分:0)

内部循环表达式应为:

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个前导空格。