Java ||与无限循环的声明

时间:2016-09-19 16:49:23

标签: java

为什么以下产生无限循环?

    int sum = 0;    
    int k = 1;
    while (sum < 12 || k < 4)
    sum += k;

    System.out.println(sum);

我会假设输出为12,一旦总和达到12而k保持为1。

5 个答案:

答案 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<12k<4。由于您没有在迭代中更改k值,因此它将始终小于4并且循环继续运行。

答案 4 :(得分:0)

你使用||声明。阅读有关&#34; ||的任何文档&安培;&安培;&#34; || =&GT;要么。 如果statement的左边是true而right是false = true(使用||)