2016-03-28 55 views
0
public class Task { 
    public static void main(String args[]) { 

    int x = 0, p = 0, sum = 0; 

    p = 1; 
    x = 2; 
    double q; 
    sum = 0; 
    while (p < 12) { 
     q = x + p - (sum + 5/3)/3.0 % 2; 
     sum = sum + (x++) + (int) q; 
     System.out.println(sum); 
     if (x > 5) 
     p += 4/2; 
     else 
     p += 3 % 1; 
    } 
    sum = sum + p; 
    System.out.println(sum); 
    } 
} 

雖然在進行線12(sum = sum + (x++) + (int)q;)我想總和應爲5,但有些問題實際上輸出4.我試圖線12相互作用窗格中,確實看到了sum=4。我不明白。不應該x++產生3(x = 2),如果這被添加到(int)q(雙q讓我像2.666666),我應該得到5.有人可以向我解釋發生了什麼?我有一個關於這個追蹤

此外,獲得我的第一個輸出後,我應該如何繼續? 接下來的條件是:

if (x > 5) 
    p += 4/2; 
else 
    p += 3 % 1; 

因爲x < 5,我應該去的其他條件,對不對? 我最後一個問題是,在使用p += 3%1後,我的p仍然是1,那麼我是否會返回到這個循環(因爲p < 12),還是我退出循環並繼續到第19行?我不知道該怎麼做。

+0

x會在總和的歸屬後增加。 – Gunner

+0

感謝您的反饋。但我仍然不明白爲什麼sum = 4而不是5。你能再解釋一下嗎? – Hades

+0

x ++(遞增)在當前指令之後完成,所以當計算總和時x是2。之後,它將變爲3. – Gunner

回答

0

在你的第一次,3%1=0 p +=3%1 =>p+=0這就是爲什麼p仍然是1

+0

事情是我弄清楚p = 1,但基本上我有關於第12行,這是要求我的總和混淆。我得到5但實際上是4.你知道那裏發生了什麼? – Hades

+0

當我得到p = 1後,我回到這個while循環嗎?我如何擺脫這個while循環?它看起來好像p將保持爲1。 – Hades

+0

經過4次第一次循環後,x將是6,然後,p將在語句p + = 4/2中重新賦值,這將給出p + = 2;那麼每次循環通過時p都是3,5,7,9,11,13。當p = 13時,循環終止 – VinhNT

1

在第12行使用的是post incrementx++)。您應該使用預增量++x

增量增加當前值x在您的語句中,然後增加x

預先增加最初增加x,然後將結果放入您的帳單。