为什么下面产生一个无限循环?Java ||而无限循环语句
int sum = 0;
int k = 1;
while (sum < 12 || k < 4)
sum += k;
System.out.println(sum);
我将承担输出将是12,一旦总和达到12:当k保持为1。
为什么下面产生一个无限循环?Java ||而无限循环语句
int sum = 0;
int k = 1;
while (sum < 12 || k < 4)
sum += k;
System.out.println(sum);
我将承担输出将是12,一旦总和达到12:当k保持为1。
应该使用而(总和 &ķ< 4),否则ķ< 4将永远是真实的,循环将继续运行。
如果使用OR,当其中一个条件为真时,循环继续。条件是循环继续,而不是停止。
false || true == true
true || true == true
false || false == false
false && true == false
true && true == true
false && false == false
所得真或假确定该循环继续
但是,因为它是一个OR语句,是不是会检查sum <12或k <4? –
这是一个多项选择问题 –
@Kyle McAllister,如果你使用OR,当这些条件之一成立时,循环继续。条件是循环继续,而不是停止。 false || true == true –
k不递增。
int sum = 0;
int k = 1;
while (sum < 12 || k < 4) {
sum += k;
k++;
}
System.out.println(sum);
为什么这将是必要的,当sum <12或k <4时,循环会不会中断?再加上这会产生不同的总和? –
@KyleMcAllister循环如果满足一些条件则继续 – amchacon
您的k
值在所有迭代中保持不变。
您的环路条件是sum<12
或k<4
。既然你没有改变迭代中的k值,它总是小于4,并且循环不断进行。
在您的代码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(sum);
但是这里你的k值仍然小于4.所以它循环无限。
编辑:嗯,我正在做多一点明确
这是你的while
循环
while (sum < 12 || k < 4)
这意味着要么sum < 12
必须是真或k < 4
必须是真实的,对循环while
循环。
而这里你的k < 4
的条件仍然如此。所以这就是为什么它保持循环无限。
对,这是一个多选题(不是我的代码)。一旦总和达到12,这不足以满足或声明并结束它吗? –
不,它们都应该是真的来终止循环。 – 2016-09-19 17:17:39
明白了,谢谢。我在想完全错误。我认为这会在1或者其他人满意时破裂。实际上,一个或另一个是真的,它会继续,而不是中断。 –
您使用||声明。阅读有关“|| & &”||的任何文档。 =>或。 如果声明的左侧为真,并且右侧为false = true(使用||)
缩进问题.... – Rishi
'k'仍然小于4,因此条件保持为真。 – resueman
增量k值 – Rishi