Java 这个无限循环背后的原因是什么?
我是java新手,我编写了一段代码来练习循环,下面是:Java 这个无限循环背后的原因是什么?,java,Java,我是java新手,我编写了一段代码来练习循环,下面是: public class scratch { public static void main(String args[]) { int value = 0; boolean myBoolean = (value < 5); while(myBoolean) { System.out.println(value); value
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;
}
}
}
你能告诉我我错过了什么吗,谢谢 在第一个示例中,您只设置了一次myBolean,并且不再更改该值。这就是为什么你的循环是无止境的 在第二个示例中,检查循环每次运行的值<5 如果你把这个符号移到你的循环中,它也会起作用
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);
}
}
}您还必须重新计算布尔表达式,以便在循环体中设置值,使其正常工作,如
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。在第一种情况下,原因很简单
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;
}
}
}
您正在将布尔变量设置为布尔值myBoolean=value<5;当值初始化为零时,该值为真。你以后不会改变,所以你会在一个无限循环中结束
在第二种情况下
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,循环终止。这个小实验是否清楚表明,您的布尔变量get只计算了一次,不再关心它是如何初始化的,也就是说,它不需要当值更改时更新自身?还有什么不清楚的呢?在第一种情况下,myBoolean的值在您更改值时不会更改。在第二种情况下也不需要,但这并不重要,因为您从不使用它的值。Boolean=0有什么不需要理解的?请阅读一些教程,解释一下一段时间是如何工作的。在这两个例子中,myBoolean只设置了一次。你说的避免使用幻数是什么意思?为什么要使用变量限制而不是只写5?非常感谢。
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;
}
}
}
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;
}
}
}