我是一个总菜鸟,所以当我解释简单的东西时,并不是因为我迟钝了,只是因为我想知道我是错误还是错。
我最初有2个变量,x1
和y1
。我把它们放在while ()
这样的
while ( y1<0 || y1>500 || x1<0 || x1>500)
我把它读成“当其中一个”事物“成立时,它会执行while函数。
例如,如果y1=601
,y1>500
为真,则其他3为假,但它进入函数,因为只需要1为真。
现在我遇到了问题,我想添加一个名为z
的第三个变量。我这样添加:
while(y1<0 || y1>500 || x1<0 || x1>500 && z>51)
我想要做的是仅在z>51
为真时运行while函数以及至少一个以上的函数。或者,如果那不可能,我希望它只在z>51
为真时运行。我的代码是错误的,因为即使z>51
为假,它现在也会永远持续下去。
答案 0 :(得分:4)
如果我理解你的问题,你想要:
while((y1<0 || y1>500 || x1<0 || x1>500) && z>51)
在布尔逻辑中,和(也称为 ^ 或。)的优先级高于或(还注意到 v 或 + )。
这意味着:
y1<0 || y1>500 || x1<0 || x1>500 && z>51
相当于
y1<0 || y1>500 || x1<0 || (x1>500 && z>51)
因此,如果这不是您想要的,则需要括号,就像您在数学中使用+
和*
时添加的括号一样。
答案 1 :(得分:0)
这两项检查是分开的。
你不能简单地写y1<0 || 50051
你必须写(y1<0 || y1>50051)
50051
始终评估为true
,因此我认为它会永远运行
您的上一次请求
while(z1>51 && y1 >0)
答案 2 :(得分:0)
或者你可以先检查z的值并保持循环不变。
if (z > 51) {
while ( [...])
[...]
}
这与Maxime的解决方案略有不同,因为它假设进入循环后z
的值无关紧要。另一方面,如果您想更新z
并将其用作退出循环的条件,请将其保持在while
条件下。