Java while和if以及else

Java while和if以及else,java,if-statement,while-loop,Java,If Statement,While Loop,Java书籍中的示例代码将歌曲从99瓶打印到墙上没有啤酒。问题是,当墙上挂着一瓶啤酒时,它仍然写着瓶子。我试图通过在末尾添加if(beerNum==1)部分来解决这个问题。但是,它仍然在墙上显示了1瓶啤酒,我在墙上显示了一瓶啤酒 我不知道要改变什么来解决这个问题。我是否要创建另一个while部分 如果你能给他们一个提示,让我自己解决它,那也太酷了!因为我知道实际的歌曲输出在第一个if部分,但我不知道应该在哪里编辑“if”,或者是否应该创建另一个if部分 谢谢 更新beerNum,然后打印出来。把

Java书籍中的示例代码将歌曲从99瓶打印到墙上没有啤酒。问题是,当墙上挂着一瓶啤酒时,它仍然写着瓶子。我试图通过在末尾添加
if(beerNum==1)
部分来解决这个问题。但是,它仍然在墙上显示了1瓶啤酒,我在墙上显示了一瓶啤酒

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

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


谢谢

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

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

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

您可以更新beerNum,然后将其打印出来。把这部分

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

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

您也可以在不使用循环和递归的情况下执行相同的操作

if (beerNum == 1) {
    word = "bottle";
}
公共类瓶子{
公共静态void main(字符串[]args){
取出瓶子(100);
}
专用静态无效清除瓶(整数瓶){
//如果瓶数小于或等于1,则打印单数版本
//否则打印复数版本
如果(数值=1){
移除瓶子(多个瓶子);
}否则{
System.out.println(“墙上再也没有啤酒了!”);
}
}
}

您也可以在没有循环和使用递归的情况下执行相同的操作

if (beerNum == 1) {
    word = "bottle";
}
公共类瓶子{
公共静态void main(字符串[]args){
取出瓶子(100);
}
专用静态无效清除瓶(整数瓶){
//如果瓶数小于或等于1,则打印单数版本
//否则打印复数版本
如果(数值=1){
移除瓶子(多个瓶子);
}否则{
System.out.println(“墙上再也没有啤酒了!”);
}
}
}


这个问题表明我缺乏基本的java知识……这就是我学习的原因--@Menelaos我不知道有具体的问题,相关的源代码,以及对他尝试过什么和他正在尝试做什么的良好解释。这远远超过了这里的平均问题:-)@Esailija是的,当你这样说的时候。可能唯一的标题太笼统了。这个问题表明我缺乏基本的java知识…这就是为什么我要学习--@Menelaos我不知道有具体的问题,相关的源代码和很好的解释他尝试了什么和他正在尝试做什么。这远远超过了这里的平均问题:-)@Esailija是的,当你这样说的时候。也许唯一的标题太笼统了。我花了我一点时间,然后它应该,但我现在明白了!谢谢大家!花了我一点时间,然后它应该,但我现在明白了!谢谢大家!不过,这是获得堆栈溢出的好方法。我个人也觉得循环更具可读性,在这个特殊的例子中。啊,这是一个dif方法,我已经解决了它,但无论如何,谢谢@记住LearnIT很好,以后它会派上用场。@RaptorDotCpp,如果您不正确终止它,它只会导致堆栈溢出。它基本上就像一个while循环。我同意循环更容易阅读,但我认为在某些情况下递归速度更快。或者如果堆栈太大。当然,这不会发生在这里。在任何现代机器上都不会。不过,这是获得堆栈溢出的好方法。我个人也觉得循环更具可读性,在这个特殊的例子中。啊,这是一个dif方法,我已经解决了它,但无论如何,谢谢@记住LearnIT很好,以后它会派上用场。@RaptorDotCpp,如果您不正确终止它,它只会导致堆栈溢出。它基本上就像一个while循环。我同意循环更容易阅读,但我认为在某些情况下递归速度更快。或者如果堆栈太大。当然,这不会发生在这里。在任何现代机器上都没有。