99 瓶啤酒 - while + if + else if infinite loops JavaScript?

99 Bottles of Beer - while + if + else if infinite loops JavaScript?

提问人:Dave 提问时间:10/9/2023 更新时间:10/10/2023 访问量:54

问:

我是编码/编程的新手,目前正在参加在线编码课程。提出的挑战之一是将歌词打印到 99 瓶啤酒歌曲中,我假设你们都知道歌词。我设法想出了一个解决方案(如下)。

目标是控制台日志迭代从 99 到 0,同时保持语法正确。

我的问题是,为什么设置 while (endBeerCount >= 0) 会导致啤酒计数在无限循环中变为负数?

设置 while (endBeerCount >= 1) 可修复无限循环并正确记录歌词。为什么这种情况不会导致无限循环?

这是我的代码:

var beerCount = 99;
var endBeerCount = 98; 
function bottlesOfBeer() {
    while (endBeerCount >= 0) { // >=0 causes infinite loop (beer counts go negative). >=1 works 
        if (endBeerCount > 1) {
        console.log(beerCount + " bottles of beer on the wall " + beerCount + " bottles of beer." + 
          "Take one down and pass it around " + endBeerCount + " bottles of beer on the wall.");  
        beerCount--;
        endBeerCount--;
        }
        else if (endBeerCount = 1) {
            beerCount--;
            endBeerCount--;
            console.log(beerCount + " bottle of beer on the wall " + beerCount + " bottle of beer. "    
              + "Take one down and pass it around no more bottles of beer on the wall.");
        }
    }
    return console.log("No more bottles of beer on the wall, no more bottles of beer.  Go to the                             store and buy some more 99 bottles of beer on the wall."); 
}
javascript if-statement while-loop 迭代

评论

4赞 Pointy 10/9/2023
=用于为变量赋值。 并用于比较。因此,将值 1 分配给变量。=====if (endBeerCount = 1)
0赞 Nina Scholz 10/9/2023
顺便说一句,为什么两个变量几乎相同?
1赞 Mister Jojo 10/9/2023
欢迎来到 Stack Overflow!这是开始熟悉使用调试器的好机会。在调试器中单步执行代码时,哪个操作首先产生意外结果?该操作中使用的值是什么?结果如何?预期的结果是什么?为什么?要了解有关此社区的更多信息以及我们如何为您提供帮助,请从教程开始并阅读如何提问及其链接资源
1赞 Dave 10/9/2023
啊,谢谢Pointy!这是有道理的。如果我理解正确,当 if 语句命中 1 时,该函数会查看 else if 语句,将 endBeerCount 重新分配给 1,并永远继续。这是正确的吗?
1赞 Konrad 10/9/2023
为什么在两个 if 分支中运行?beerCount--; endBeerCount--;

答: 暂无答案