Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/326.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 为什么循环中的赋值会影响程序其余部分的执行?_Java - Fatal编程技术网

Java 为什么循环中的赋值会影响程序其余部分的执行?

Java 为什么循环中的赋值会影响程序其余部分的执行?,java,Java,我最近编写了一个非常简单的程序。99瓶啤酒歌 代码块究竟是如何工作的?我想我非常具体的问题是为什么 if(beerNum == 1) { word = "bottle } 在我的小程序中工作?由于代码块直到程序结束才运行,那么当beerNum==1时,后面的代码行如何知道单词瓶子应该是单数 这是因为Java按照代码中出现的顺序读取所有代码行。这可能看起来微不足道,但如果你移动你的街区 if(beerNum == 1) { word = "bottle } 在while循环结束

我最近编写了一个非常简单的程序。99瓶啤酒歌

代码块究竟是如何工作的?我想我非常具体的问题是为什么

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

在我的小程序中工作?由于代码块直到程序结束才运行,那么当
beerNum==1
时,后面的代码行如何知道单词瓶子应该是单数

这是因为Java按照代码中出现的顺序读取所有代码行。这可能看起来微不足道,但如果你移动你的街区

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

在while循环结束时,即使递减效果仍然有效,代码也不会工作(瓶子仍然是复数)

轻松更改代码块

if(beerNum >= 2) {
    word = "bottles";
} else {
    word = "bottle";
}

这将为您提供相同的输出。希望这有助于您更好地理解

它知道打印
瓶子
而不是
瓶子
,因为最初您已将
单词
变量设置为
“瓶子”
。但如果
beerNum
为1,则单词将更改为
bottle
,因为if语句

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

首先在while循环中检查并更改
word
变量

我认为您的代码没有问题。您可以在任何IDE中运行它,或者使用命令行运行它吗?!只是一件小事,在代码中

 if(beerNum > 0) {
    System.out.println("Take one down, pass it round " + beerNum + " " + word + " of beer");
        }
 beerNum = beerNum - 1;
我认为我们不需要检查beerNum>0,只需执行以下操作:

while(beerNum > 0) {

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

    System.out.println(beerNum + " " + word + " of beer on the wall, " + beerNum + " " + word + " of beer.");
    System.out.println("Take one down, pass it round " + beerNum + " " + word + " of beer");
    beerNum = beerNum - 1;
}

为什么你认为它在程序结束前不会运行?当序列到达它时,它就会运行,这是while中的第一个。你为什么一直发布?使用该代码帮助我处理代码块有什么问题吗?是的,看起来有点干净。是的,它确实在运行,我只是想知道代码块是如何工作的。
while(beerNum > 0) {

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

    System.out.println(beerNum + " " + word + " of beer on the wall, " + beerNum + " " + word + " of beer.");
    System.out.println("Take one down, pass it round " + beerNum + " " + word + " of beer");
    beerNum = beerNum - 1;
}