这是打印出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