理解Java中的金字塔数字

时间:2012-04-16 14:50:19

标签: java for-loop numbers

我正在研究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

我把代码砍掉并逐行研究我到目前为止我已经在这条线上学习了...... heheh

所以这是我想问的代码。

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

第一个问题:代码ifor (int j = 1; j <= x - i; j++)成为i= 1234567吗? 第二个问题:从初始化到1,如果增量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

1 个答案:

答案 0 :(得分:1)

您的代码有两个嵌套循环(一个循环在另一个循环中运行)。这就是:

  1. 您将x设置为7
  2. 您正在启动外循环,设置i = 1.由于1 <= 7,因此输入循环。
  3. 您正在启动内循环,设置j = 1.由于1 <= 6(来自x-i的7-1),因此输入循环。
  4. j(1)被打印。
  5. j增加1,并且由于2小于6,内循环继续。
  6. j(2)被打印。
  7. 这一直持续到j为6。

    1. j(6)被打印。
    2. j增加1,现在是7,不是&lt; = 6,所以内循环退出。
    3. 我增加了一个(现在是2)。
    4. 再次输入内循环,将j设置为1.由于j <1。 5(来自x-i的7-2)输入循环。 打印11 j(1)。 12j增加1并且现在是2.因为2 <1。 6循环继续。
    5. 这一直持续到我达到7.当i增加1时它是8而不是&lt; = 7所以外部循环也存在并且你的程序已经完成。

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