2012-04-16 121 views
-1

我正在学习Java中的Pyramid Numbers,它有这样的代码。了解Java中的金字塔数字

​​3210

输出是

    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..2..3..5..6..7 ..是从1234567减去最后一个数字的增量,则从初始值是

1234567-1 .. 123456 - 1 ... 12345 - 1 ... 1234 - 1 ... 123 - 1 ... 12-1 ... 1-0 .... until false我是对不对?

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

+0

从1..6从1..5写数字,那么我想走得更远,直到我明白,心中bugling金字塔请一起帮我这样hehehehe .... – JustNoobWillingToLearn 2012-04-16 14:57:35

回答

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)被打印。

这一直持续到j是6.

  1. Ĵ(6)被打印。
  2. j增加1并且现在是7而不是< = 6,所以内部循环退出。
  3. 我增加了一个(现在是2)。
  4. 再次输入内循环,将j设置为1.由于j < 5(来自x-i的7-2)循环被输入。 11 j(1)被打印。 12 j增加1并且现在为2.因为2 < 6,循环继续。

这继续下去,直到我达到7当我增加1它是8这不是< = 7所以外部循环也存在,你的程序完成。

你的程序将计数,直到它达到1..1

+0

所以我这里不是1234567哈哈哈....我在这里是1我是对不对?我真的很新鲜。 – JustNoobWillingToLearn 2012-04-16 15:06:22

+0

所以它不会改变初始化i = 1?因为如果我显示第一个循环的输出。对于(i = 1; i <= 7,i ++)我输出了1234567. – JustNoobWillingToLearn 2012-04-16 15:09:54

+0

好的我现在明白了。这是在我国的深夜,我的帖子可能是明天GMT + 8大声笑。 – JustNoobWillingToLearn 2012-04-16 15:14:52