为什么以下产生无限循环?
int sum = 0;
int k = 1;
while (sum < 12 || k < 4)
sum += k;
System.out.println(sum);
我会假设输出为12,一旦总和达到12而k保持为1。
答案 0 :(得分:1)
你应该使用while(sum&lt; 12&amp;&amp; k&lt; 4),否则K&lt; 4 4将始终为true,循环将继续运行。
如果使用OR,则在其中一个条件为真时循环继续。循环的条件是继续,而不是停止。
false || true == true
true || true == true
false || false == false
false && true == false
true && true == true
false && false == false
结果为true或false确定循环是否继续
答案 1 :(得分:1)
k不会增加。
int sum = 0;
int k = 1;
while (sum < 12 || k < 4) {
sum += k;
k++;
}
System.out.println(sum);
答案 2 :(得分:1)
在您的代码中k
没有增加,因此条件仍然正确。这就是为什么你的循环是无限的。
int sum = 0; // sum is 0
int k = 1; // k is 1
while (sum < 12 || k < 4) {
sum += k; // sum is incremented by 1 each time it loops
}
的System.out.println(总和);
但是这里你的k值仍然小于4.所以它循环无限。
编辑:嗯,我让它更清晰这是您的while
循环
while (sum < 12 || k < 4)
这意味着sum < 12
必须为true或k < 4
必须为true才能循环while
循环。
此处您的k < 4
条件仍然存在。这就是为什么它不断循环。
答案 3 :(得分:0)
您的k
值在所有迭代中保持不变。
您的循环条件为sum<12
或k<4
。由于您没有在迭代中更改k值,因此它将始终小于4并且循环继续运行。
答案 4 :(得分:0)
你使用||声明。阅读有关&#34; ||的任何文档&安培;&安培;&#34; || =&GT;要么。 如果statement的左边是true而right是false = true(使用||)