0

我完全是个菜鸟,所以当我解释简单的东西时,并不是因为我智障,只是我想知道我的想法是对还是错。

我一开始有 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为 true 以及至少 1 个函数的情况下运行 while 函数。或者,如果那不可能,我希望它仅在z>51为真时运行。我的代码是错误的,因为现在它只会永远持续下去,即使它z>51是错误的。

4

3 回答 3

4

如果我正确理解你的问题,你想要:

while((y1<0 || y1>500 || x1<0 || x1>500) && z>51)

在布尔逻辑中,and(也记为^. )比or(也记为v+ )具有更高的优先级。

意思就是:

y1<0 || y1>500 || x1<0 || x1>500 && z>51

相当于

y1<0 || y1>500 || x1<0 || (x1>500 && z>51)

因此,如果这不是您想要的,您需要括号,就像您在使用+*数学时添加的括号一样。

于 2013-10-04T14:28:56.503 回答
0

2张支票是分开的。

你不能简单地写y1<0 || 50051 你必须写(y1<0 || y1>50051)

50051总是评估为true因此我认为它会永远运行

为您的最后一个请求

while(z1>51 && y1 >0)
于 2013-10-04T14:25:03.453 回答
0

或者,您可以先检查 z 的值并保持循环不变。

if (z > 51) {
  while ( [...])
  [...]
}

这与 Maxime 的解决方案略有不同,因为它假设z一旦进入循环, 的值就无关紧要了。另一方面,如果您想更新z并将其用作退出循环的条件,则将其保持在while条件中。

于 2013-10-04T14:35:44.870 回答