我是java的新手,我编写了一个代码来练习循环,这就是它:
public class scratch {
public static void main(String args[]) {
int value = 0;
boolean myBoolean = (value < 5);
while(myBoolean) {
System.out.println(value);
value = value + 1;
}
}
}
当我运行它时,我得到一个无限循环,但是如果我改变了&#34;而#34;像这样的论点:
public class scratch {
public static void main(String args[]) {
int value = 0;
boolean myBoolean = (value < 5);
while(value < 5) {
System.out.println(value);
value = value + 1;
}
}
}
它有效,这是输出:
0
1
2
3
4
你能告诉我我在这里失踪了吗,谢谢你!
答案 0 :(得分:1)
您必须还重新评估boolean
表达式,以便在循环体中设置您的值以使其正常工作,例如
final int LIMIT = 5; // <-- try to avoid magic numbers.
boolean myBoolean = (value < LIMIT); // <-- assigns the result of the expression
// `value < LIMIT` to `myBoolean`.
while(myBoolean) {
System.out.println(value);
value = value + 1; // <-- value++;
myBoolean = (value < LIMIT);
}
没有最后一行更新myBoolean
,当myBoolean
为true
时,始终为true
。
答案 1 :(得分:0)
在您的第一个示例中,您只设置一次“myBolean”,并且永远不会再次更改该值。这就是你的循环无止境的原因。
在第二个示例中,检查值&lt; 5,循环的每次运行。
如果你将这个asignment移动到你的循环中,它也会起作用。
public class scratch {
public static void main(String args[]) {
int value = 0;
boolean myBoolean = true;
while(myBoolean) {
System.out.println(value);
value = value + 1;
myBoolean = (value < 5);
}
}
}
答案 2 :(得分:0)
原因很简单,在第一种情况下
public class scratch {
public static void main(String args[]) {
int value = 0;
boolean myBoolean = (value < 5);
while(myBoolean) {
System.out.println(value);
value = value + 1;
}
}
}
您将布尔变量设置为boolean myBoolean = (value < 5);
,当值初始化为零时,该值为true。并且你以后不会改变它,所以你最终会陷入无限循环
在第二种情况下
public class scratch {
public static void main(String args[]) {
int value = 0;
boolean myBoolean = (value < 5);
while(value < 5) {
System.out.println(value);
value = value + 1;
}
}
}
你正在增加循环中的值并比较循环的值本身以继续,当值变为5
时,条件变为false并且循环终止。