我最近编写了一个非常简单的程序。 99瓶啤酒歌曲。
public class apples {
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, " + beerNum + " " + word + " of beer.");
if(beerNum > 0) {
System.out.println("Take one down, pass it round " + beerNum + " " + word + " of beer");
}
beerNum = beerNum - 1;
}
if(beerNum == 0) {
System.out.println("No more bottles of beer on the wall.");
}
}
}
代码块如何正常工作?我想我的具体问题是为什么
if(beerNum == 1) {
word = "bottle
}
在我的小程序中普遍工作?由于代码块直到程序结束才运行,后面的代码行如何知道beerNum == 1
时单词瓶应该是单数?
答案 0 :(得分:0)
这是有效的,因为Java按照它们在代码中出现的顺序读取所有代码行。这似乎微不足道,但如果你移动你的块
if(beerNum == 1) {
word = "bottle
}
到你的while循环结束时,你的代码不会工作(瓶子仍然是复数),即使递减效果仍然有效。
答案 1 :(得分:0)
正确更改代码块
{{1}}
这将为您提供相同的输出。希望这有助于您更好地理解
答案 2 :(得分:0)
它知道要打印bottle
而不是bottles
,因为最初您已将word
变量设置为"bottles"
。但如果beerNum
为1,则单词将更改为bottle
,因为if语句
if(beerNum == 1) {
word = "bottle
}
首先在while循环中检查并更改word
变量。
答案 3 :(得分:0)
我认为您的代码没有问题。你可以在任何IDE中运行它或使用命令行来运行吗?!在代码
中只是琐碎的事情 if(beerNum > 0) {
System.out.println("Take one down, pass it round " + beerNum + " " + word + " of beer");
}
beerNum = beerNum - 1;
我认为我们不需要检查beerNum> 0,就像这样:
while(beerNum > 0) {
if(beerNum == 1) {
word = "bottle";
}
System.out.println(beerNum + " " + word + " of beer on the wall, " + beerNum + " " + word + " of beer.");
System.out.println("Take one down, pass it round " + beerNum + " " + word + " of beer");
beerNum = beerNum - 1;
}