public class Head1 {
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");
}
if (beerNum == 1) {
System.out.println(beerNum + " " + word + " of beer on the wall");
} else {
System.out.println("No more bottles of beer on the wall!");
}
}
}
}
这本来自Java书籍的示例代码打印出从99瓶到墙上没有啤酒瓶的歌曲。问题是,当墙壁上有1瓶啤酒时,它仍然会说瓶子。我尝试通过在最后添加if (beerNum == 1)
部分来解决此问题。但是,它仍然显示墙上有1瓶啤酒,墙上还有一瓶啤酒。
我不知道要改变什么来解决这个问题。我是否在创建另一个部分?
如果你能给他们一个提示,那么我可以自己解决这个问题也很酷!因为我确实理解我实际的歌曲输出是在第一个if部分,但我不知道我应该在哪里编辑“if”或者我应该创建另一个if部分。
谢谢!
答案 0 :(得分:4)
您更新beerNum然后将其打印出来。把部分
if (beerNum == 1) {
word = "bottle";
}
更新beerNum值之后的行。对“瓶子”和“瓶子”使用单独的变量也是一个好主意。
答案 1 :(得分:0)
您也可以在没有循环的情况下执行相同操作并使用递归。
public class Bottles {
public static void main(String[] args) {
removeBottle(100);
}
private static void removeBottle(int numOfBottles) {
// IF the number of bottles is LESS THAN OR EQUAL to 1 print singular version
// ELSE print plural version
if (numOfBottles <= 1) {
System.out.println(numOfBottles + " bottle of beer on the wall.");
} else {
System.out.println(numOfBottles + " bottles of beer on the wall.");
}
// print of the rest of song
System.out.println("Take one down.");
System.out.println("Pass it around.\n"); // "\n" just puts new line
numOfBottles--; // remove a bottle
// IF the number of bottles is GREATER THAN OR EQUAL to 1 do it again!
// ELSE no more bottles =(
if (numOfBottles >= 1) {
removeBottle(numOfBottles);
} else {
System.out.println("No more bottles of beer on the wall!");
}
}
}