-1

我正在研究 Java 中的金字塔数字,它有这样的代码。

public class PyramidCharForLup {

  public static void main(String[] args) {

     int x = 7;  
     for (int i = 1; i <= x; i++) 
     {  
         for (int j = 1; j <= x - i; j++)  
             System.out.print("   ");  
         for (int k = i; k >= 1; k--)  
             System.out.print((k >=10) ?+ k : "  " + k);  
         for (int k = 2; k <=i; k++)  
             System.out.print((k>= 10) ?+ k : "  " + k);  
         System.out.println();  
     }  
   }
 }

输出是

                    1
                 2  1  2
              3  2  1  2  3
           4  3  2  1  2  3  4
        5  4  3  2  1  2  3  4  5
     6  5  4  3  2  1  2  3  4  5  6
  7  6  5  4  3  2  1  2  3  4  5  6  7

我砍代码并逐行研究到目前为止我已经在这一行中学习了..呵呵

所以这是我想问的代码。

public class PyramidCharForLup {

   public static void main(String[] args) 
   {
      int x = 7;
      for (int i = 1; i <= x; i++) {
         for (int j = 1; j <= x - i; j++)
            System.out.print(j);

      }
   }
}

123456123451234123121如果您要安排 ,此输出用于澄清123456 12345 1234 123 12 1

第一个问题:i在代码中for (int j = 1; j <= x - i; j++)变成了i= 1234567
第二个问题:从初始化中,如果增量 1..2..3..5..6..7.. 是从 1234567 中减去最后一个数字的增量,则为一个

1234567-1... 123456 - 1 ... 12345 - 1 ... 1234 - 1 ... 123 - 1 ... 12-1...1-0.... 直到错误 我对吗?

这就是我得到这个输出的原因 123456 12345 1234 123 12 1

4

1 回答 1

1

您的代码有两个嵌套循环(一个循环在另一个循环内运行)。这就是发生的事情:

  1. 您将 x 设置为 7
  2. 您正在启动外部循环,设置 i = 1。由于 1 <= 7 进入循环。
  3. 您正在启动内部循环,设置 j = 1。由于 1 <= 6 (7-1 from x - i) 进入循环。
  4. j (1) 被打印出来。
  5. j 增加 1 并且由于 2 小于 6 内部循环继续。
  6. j (2) 被打印出来。

这一直持续到 j 为 6。

  1. j (6) 被打印出来。
  2. j 增加 1,现在是 7,不是 <= 6,所以内部循环退出。
  3. i 加一(现在是 2)。
  4. 再次进入内部循环,将 j 设置为 1。由于 j < 5 (7-2 from x - i),进入循环。打印 11 j (1)。12 j 增加 1,现在是 2。由于 2 < 6,循环继续。

这一直持续到 i 达到 7。当 i 增加 1 时,它是 8,而不是 <= 7,因此外循环也存在并且您的程序完成。

您的程序将从 1..6 开始计数并写入数字,然后从 1..5 直到达到 1..1

于 2012-04-16T15:02:40.707 回答