2017-08-17 111 views
-1

嗨,我有一个关于嵌套for循环在java中的初学者问题。嵌套for循环Java混淆

int sum = 0; 
for(int i = 1; i < 3; i++){ 
    for(int j = i; j>= 0; j--){ 
     sum += j; 
    } 
} 

所以这里是我的跟踪表

i j sum 
1 1 1 
    0 1 
2 2 2 
    1 3 
    0 3 

我的问题是,为什么在循环结束时,输出为4?是因为3 + 1吗?

+6

您提供您的输出,这与3.然后结束你问为什么以4结尾。有人可以向我解释吗? – f1sh

+2

'1 + 2 + 1 = 4' – Guy

+0

这是我的跟踪表,我的问题是循环结束时sum的值是多少?是不是应该是3?但是当我在eclipse中运行时,它给了我4. –

回答

2

您的跟踪表是错误的。这是正确的:

i j sum 
1 1 1 
    0 1 
2 2 3 
    1 4 
    0 4 

你总结j(第二列)的所有值,这本质上是1 + 0 + 2 + 1 + 0 = 4

+0

因此,总和连接到下一个外部循环? –

+0

不是直接。但是你的变量'j'连接到外部循环。你总结'j'的值。 –

+0

对于(int j = 1; j <= 2; j ++ {int i = 1; j <= 2; j ++}),对于(int i = 1; i <= 3; i ++)是否具有相同的概念: System.out.print(“六大“);? }} 它实际打印6所以它的同一个概念 –

1

输出是4,因为sum是:

0 + 
1 + 
2 + 1 = 
= 4 

首先,添加1,然后21。您的循环将所有三角形数字总和小于3.三角形数字是从1n之间的数字的总和。这些都是13610等。

+0

所以这些数字是从以J跟踪表 –

+0

你做出你的跟踪错误,您应该使用调试器?。 – xenteros

1

实际上,我们需要改正你的表结果:

i j sum 
1 1 1 
    0 1 
2 2 2 (sum is 2+1(existing sum, sum is not 0 anymore)) 
    1 3 (sum is 3 + 1 = 4) 
    0 3 (sum is 4+ 0 = 4)