2014-01-12 52 views
-3

我只是很困惑,從這個作業問題。我不明白爲什麼總和這樣的值出來。我只是不明白這裏的算法的概念,有人能解釋一下嗎?爲什麼for循環輸出這個?

int i = 0; 
int sum = 0; 
for(i=0; i < 5; i++) 
{ 
    sum += i; 
} 
System.out.println(i + "\n" + sum); 

的輸出是:

5 
10 

----jGRASP: operation complete. 
+6

你在這裏不瞭解什麼部分? –

+2

打印出循環內的i值和總和,看看它們是如何變化的。 – OldProgrammer

+1

0 + 1 + 1 + 1 + 1 + 1 = 5 ='i'。 0 + 0 + 1 + 2 + 3 + 4 = 10 ='sum'。 – David

回答

6
  • 5 - 因爲有5次迭代
  • 10 - 因爲總和爲10 :)

薩姆

Iteration 1: 0 + 0 = 0 
Iteration 2: 0 + 1 = 1 
Iteration 3: 1 + 2 = 3 
Iteration 4: 3 + 3 = 6 
Iteration 5: 6 + 4 = 10 

驗證碼

int i = 0; 
int sum = 0; 
for (i = 0; i < 5; i++) { 
    System.out.println(String.format(
     "Iteration %s: %s + %s = %s", (i + 1), sum, i, (sum + i))); 
    sum += i; 
} 
3

此代碼:

int i = 0; 
    int sum = 0; 
    for(i=0; i < 5; i++) 
    { 
    sum += i; 
    } 
    System.out.println(i + "\n" + sum); 

sum這個輸出:0 + 1 + 2 + 3 + 4,其等於10和i迭代= 5

的數量
3

您已創建一個值爲0的變量i,然後在for循環中將其增加5次。所以你的i的值爲5

現在和的值是0+1+2+3+4這是10

1

因爲你通過你的循環,這讓我== 5,然後打印迭代,

點心去如下,您要添加到我先前計算的總和

0 + 1 = 1 
1 + 2 = 3 
3 + 3 + 6 
6 + 4 = 10 

試着把你的打印命令放到循環中,他們你可以更好地看到發生了什麼。

1

唯一的非明顯的一點是(在我看來):i將是5,因爲你使用i++,這也增加i 1,即使身體上一次迭代後沒有執行。身體內部i只能是最大4.

int sum = 0; int i = 0; 
for (i = 0; i < 5; i++) 
{ 
    sum += i; 
    if (i == 5) 
     System.out.println("never executed"); 
}; 

其他答案告訴其他事情。