0

我很难让这段代码从 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

我觉得我很接近

4

3 回答 3

6

将您的内部循环更改为:

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

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

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

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

于 2013-10-02T20:55:22.377 回答
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);
}
于 2013-10-02T20:59:12.970 回答
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 个前导空格。

于 2013-10-02T21:05:39.367 回答