2017-08-17 112 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)