Java和if和else

时间:2013-04-10 22:07:39

标签: java if-statement while-loop

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部分。

谢谢!

2 个答案:

答案 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!");
        }
    }
}