2012-02-18 52 views
0

我在一個Java代碼實驗室一個問題,即讀,因爲這終止:While循環讀取非負值,當小於0的值被讀取

把那兩個int變量,總的和金額已經聲明,編寫一個循環,將非負值讀入數量並將其添加到總數中。當小於0的值讀入數量時,循環終止。

我的輸出或者說,我在我的總和中包括一個負值,或者我似乎停止在零,這取決於我如何編碼語句。

我的循環如下:

total = 0; 
amount = 0; 
while(amount > -1) 
{ 

amount = TC.getNum(); 

total = total + amount; 
} 

這個特別的一個人說我似乎在零至被停止。

回答

2

你的代碼添加amount無條件total,然後檢查它是否應該在這之前已經終止。嘗試:

total = 0; 
amount = 0; 
do { 
    total = total + amount; 
    amount = TC.getNum(); 
} while (amount > -1); 

或:

total = 0; 
amount = 0; 
while(true) { 
    amount = TC.getNum(); 
    if (amount < 0) 
     break; 
    total = total + amount; 
} 

我不知道我自己,我更喜歡。

編輯:我覺得我更喜歡第二個版本。它更自然地閱讀,並且由於在循環的開始處多餘(並且可能容易出錯)total = total + 0,第一個可能會混淆。

+0

這樣做。不知道爲什麼我認爲我不應該在此練習中添加If語句。愚蠢的我。乍一看,第二版至少對我來說更容易理解。 非常感謝您的幫助。這是我需要完成的最後一個問題! – Abweichung 2012-02-18 02:04:18

+0

不要忘記'總額+ =金額' – 2012-02-18 02:20:31

+0

@JustinMuller我更喜歡儘可能地改變OP的代碼,以便他們更容易地遵循真實的變化。我會用+ =否則,是的。 (這是你的意思嗎?) – Irfy 2012-02-18 02:24:02