這是打印出99首瓶裝啤酒的整首歌的代碼。我從書中得到它。我剛剛開始。代碼是正常的,運行良好。只有一個小小的打嗝。當它下降到1瓶時,它第一次說「瓶子」。 if語句似乎對該行或其他內容沒有影響。我的問題是:是什麼原因導致它在第一行中是複數?這個Jave代碼的小缺陷
public class bottle {
public static void main(String[] args) {
int beerNum = 99;
String word = "bottles";
while (beerNum > 0) {
if (beerNum == 1) {
word = "bottle";
}
System.out.println(beerNum + " " + word + " of beer on the wall");
System.out.println(beerNum + " " + word + " of beer");
System.out.println("Take one down.");
System.out.println("Pass it around.");
beerNum = beerNum - 1;
if (beerNum > 0) {
System.out.println(beerNum + " " + word + " of beer on the wall.");
} else {
System.out.println("No more bottles of beer on the wall.");
}
}
}
}
在我可以發佈答案之前關閉,但基本上'beerNum'正在檢查*之前*減少,因此'beerNum == 1'爲false時會打印1,因爲'beerNum'爲'2 '。我很清楚這裏有什麼問題,我可以發佈一個答案,投票重新開放。 – dimo414 2014-09-03 18:32:47
想一想BeerNum在達到1時的價值。它將在最後一輪之前進入第二個if-block,並且單詞仍然是瓶子。 – jpw 2014-09-03 18:33:01
考慮這兩個問題:'beerNum'在哪裏更新?何時更新「單詞」?按照邏輯,你會發現發生了什麼 – Barranka 2014-09-03 18:33:32