gpt4 book ai didi

java - 为什么这个 while 循环在满足条件后才运行?

转载 作者:行者123 更新时间:2023-12-02 03:25:28 24 4
gpt4 key购买 nike

当我像这样执行常规 while 循环时

int x = 0;

while (x < 2) {
System.out.println(x);
x = x + 1;
}

打印

0
1

但是第二个 while 循环在满足条件后又运行一次。

class Hobbits {
String name;

public static void main(String [] args) {

Hobbits [] which = new Hobbits[3];

int number = -1;

while (number < 2) {

number = number + 1;

which[number] = new Hobbits();

which[number].name = "bilbo";

if (number == 1) {
which[number].name = "frodo";
}

if (number == 2) {
which[number].name = "sam";
}

System.out.print(which[number].name + " is a ");
System.out.println("good Hobbit name");

}
}
}

所以结果是

bilbo is a good Hobbit name
frodo is a good Hobbit name
sam is a good Hobbit name

它不应该停止打印“frodo is a good Hobbit name”

我设置了 x < 2 的条件,那么如果 while 循环应该在 x == 1 处停止,“sam”如何打印?

编辑:哦哦,我现在明白了,哈哈,我在想增量是在代码的末尾,而开头是 0

最佳答案

这是与您的代码更匹配的测试用例:

class Test {
public static void main(String[] args) {
int x = -1;

while (x < 2) {
x = x + 1;
System.out.println(x);
}
}
}

它确实打印:

$ java Test
0
1
2

您的循环并未设计为在 number 时停止。是 2,如果数字是 2,它会在下一次迭代之前停止。因为您递增 number在循环的早期,它将继续使用该值,直到选择是否再次迭代为止。

  • 在第一次迭代之前,number = -1这是 <2所以它应该迭代。

  • 在第二次迭代之前,number = 0 ,即<2如此迭代。

  • 在第三次迭代之前,number = 1 ,即<2如此迭代。

  • 第四次迭代之前,number = 2 ,这不是 <2所以停下来吧。

因此您会得到 3 次迭代。

您最初的测试用例有正确的想法——最好将增量作为循环的最后一步。这样,您就可以从 0 开始。而不是-1 ,然后根据新值而不是之前的值停止循环。

关于java - 为什么这个 while 循环在满足条件后才运行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38985749/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com