0
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 瓶啤酒,我在墙上有一瓶啤酒。

我不知道要改变什么来解决这个问题。我要创建另一个 while 部分吗?

如果你能给他们一个提示,那么我可以自己解决它,那也很酷!因为我知道我的实际歌曲输出在第一个 if 部分,但我不知道我应该在哪里编辑“if”或者我是否应该创建另一个 if 部分。

谢谢!

4

2 回答 2

4

你更新 beerNum 然后打印出来。把部分

if (beerNum == 1) {
    word = "bottle";
}

在更新 beerNum 值的行之后。对“瓶子”和“瓶子”使用单独的变量也是一个好主意。

于 2013-04-10T22:11:06.360 回答
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!");
        }
    }
}
于 2013-04-10T22:20:46.123 回答