当我像这样做一个常规的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
“佛罗多是一个很好的霍比特人的名字”难道它不应该停止印刷吗
我设置了x的条件
编辑:哦,我现在明白了,哈哈,我想增量是在代码的末尾,开始是0
这种行为没有错。您设置number=-1
,然后执行一个循环,循环将迭代number
number = -1
(-1 < 2)? Yes. Execute code inside while.
number = number + 1 (0)
(0 < 2)? Yes. Execute code inside while.
number = number + 1 (1)
(1 < 2)? Yes. Execute code inside while.
number = number + 1 (2)
(2 < 2)? No. Continue with the next instruction after the while block.
我会尽力帮你查一查。
第一种情况就是这样。
x = 0
is 0 < 2? yes
print 0
0 <- 0 + 1 // here it becomes 1
is 1 < 2? yes
print 1
1 <- 1 + 1 // here it becomes 2
is 2 < 2? no
exit program
第二圈更像这样
number = -1
is number < 2? yes
number <- -1 + 1 // here it becomes 0
make hobbit "bilbo" at index 0
0 does not equal either 1 or 2
print hobbit at index 0 who is "bilbo"
is 0 < 2? yes
0 <- 0 + 1 // here it becomes 1
number equals 1 so make "frodo" at index 1
print hobbit at index 1 who is "frodo"
is 1 < 2? yes
1 <- 1 + 1 // becomes 2
number equals 2 so make "sam" at index 2
print hobbit at index 2 who is "sam"
is 2 < 2? no
end program
以下是与代码更为匹配的测试用例:
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
即
在第二次迭代之前,
number=0
,也就是
在第三次迭代之前,
number=1
,即
在第四次迭代之前,
number=2
,这不是
因此得到3次迭代。
您最初的测试用例有一个正确的想法——最好在循环的最后一步增加。这样,您从
0
开始,而不是从-1
开始,然后根据新值而不是以前的值停止循环。
我写了一个代码,获取用户对开始日期的输入
我试图用Python做一个简单的计算器。 我希望用户写“and”,然后while循环应该结束。当我运行它并输入随机文本时,while循环工作并显示“重试”。然而,当我实际输入正确答案(“add”)时,while循环并没有结束——相反,它一直在说“再试一次”。 为什么会这样?我的代码怎么了?
我有一个项目,我的方法得到两个日期,它不断地向方法添加一天,直到两个日期相等,然后您可以通过查看一天添加了多少次来查看日期相距有多远。我的问题是,当满足日条件时,即使日、月和年必须都相同才能停止工作,我的while循环也会退出
我需要两种while循环的帮助。
尝试编写一个程序,其中用户输入他们一周的费用。麻烦在于我希望程序重新询问用户是否输入了不可接受的输入。我想出了如何检测负值的方法,但是当尝试捕获输入不匹配异常(如果像输入字符或字符串一样)时,循环只是无限运行,要求“星期一费用:”我如何使它,以便用户有另一个回答的机会?我试着Rest一下;但是这也打破了做而循环,我不想要。 这是我目前为止的代码: 谢谢你的帮助
我正在尝试使用一个do while循环来找出用户是想将一只狗还是一只猫检查到Java的养狗系统中。其思想是,当提示时输入“dog”或“cat”,任何输入都将导致错误,并且他们将再次被提示输入文件名。 如果输入了“cat”或“dog”,那么将为程序分配等效的文件(dogs.txt或cats.txt),然后系统将运行并将数据加载到程序中。 以下是当前的变量: 以及导致问题的方法: 下面是运行代码时打印