[英]While loop multiple conditions don't check both conditions
var x = 0;
var y = 0;
while (x < 10 && y < 20){
x += 1;
y += 1;
console.log('This is x: ', x)
console.log('This is y: ', y)
}
我不认为我了解循环中的多个条件是如何工作的。 我希望代码可以继续循环直到x大于10并且y大于20,但是一旦x大于10,循环就会停止。我认为&&意味着必须同时满足两个条件。
我以为&&意味着必须同时满足两个条件
是的 x
不再小于10,因此不满足条件。 您需要一个或 ,其中必须满足以下任一条件:
while (x < 10 || y < 20){
尽管在这种简单情况下,循环仍仅由y
变量控制,因为它们以相同的速率递增。
如果您同时需要两个条件(x小于10并且y小于20):
while (x < 10 && y < 20){
在您的示例x = 11中,因此不满足此条件。
但是,如果您希望同时满足以下条件(x小于10或y小于20):
while (x < 10 || y < 20){
您要x < 10 || y < 20
x < 10 || y < 20
相反,或!(x >= 10 && y >= 20)
,根据问题文本判断,您可能会发现它更清晰。
但请注意, x
将超过10。
condition1 && condition2
将用它们各自的布尔值(True / False)代替condition1&2。
在您的情况下,x越过10,表达式将变为
False && Condition2
始终为False
( 基本布尔代数 )。
用纠正
x<10 || y<10
我以为&&意味着必须同时满足两个条件
实际上,这意味着必须同时满足两个条件。 一旦一种情况失败,循环就会结束。
正如其他人指出的,如果您希望满足其他条件,则必须使用or:
while (x < 10 || y < 20){
至于您的预期输出,仅一个循环就无法满足。 您需要额外的条件:
while (y < 20){ // keep going until y == 20
if(x < 10) { // only increase/print x while < 10
x += 1;
console.log('This is x: ', x)
}
// always print y - since its the bigger one
y += 1;
console.log('This is y: ', y)
}
这仅适用,因为您知道哪个数字会变大(y> x)。 如果您不事先知道自己的限制,但是仍然想要类似的结果,则必须使用如下代码:
int MAX_X = 10;
int MAX_Y = 20;
while (y < MAX_X || x < MAX_Y){ // keep going until both limits are reached
if(x < MAX_X) { // only increase/print x while < max_x
x += 1;
console.log('This is x: ', x)
}
if(y < MAX_Y) { // only increase/print y while < max_y
y += 1;
console.log('This is y: ', y)
}
}
这将一直进行到达到最大限制为止(如果X或Y较大,则无关紧要),但停止打印/增加较小的数字
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.