好的,我可以说我有boolean x = false
。如果我有一个循环说while (!x)
这意味着x是非假(true)还是x不是真(假)?
编辑: 好吧我有点困惑,我想我会得到不同的答案。所以,如果我有
int x=0;
boolean add1=false;
while (!add1){
x=1;
}
在这种情况下x的最终值是多少?
答案 0 :(得分:16)
x=false;
while (!x)
替换x
的值
while(!false)
现在!
是逻辑补码运算符,它反转了布尔值,所以得到
while(true)
所以我们一直循环直到x
为false
或!x
为true
。
请注意,变量的值可能会在循环体中发生变化,从而导致循环中断。考虑一个典型的搜索程序,它使用名为found的布尔变量:
found = false; // initialize found to false.
while(!found) { // keep looping till key is not found.
...
if(key is found) {
found = true; // key found...make found true.
}
}
<强>更新强>
在您更新的问题中,add1
最初为false
,因此!add1
为true
,因此我们输入了while循环并将x
更改为1
。由于add1
的值在循环中没有变化,并且没有break
和return
,因此您可以无限循环。
答案 1 :(得分:3)
只要!x
为真,循环就会重复。换句话说,只要x
为假,它就会重复。
答案 2 :(得分:3)
始终检查布尔条件是否为真。所以while (!x)
表示x不为真,即x为假。
更新:您发布的代码是一个无限循环,因为!add1
的计算结果为true,并且在循环中永远不会更改。
答案 3 :(得分:2)
我觉得没有人真的(试图)解释,意味着什么。
while (!x)
并非真正意味着。这只是计算机的一些说明。当x为真或假或其他时,它并不意味着做什么。 !x
是一个表达式,在x = false
的情况下,此表达式生成true
。计算机通过对true
:!
的值应用x
来实际计算false
。
while(!x)
并不意味着“当x等于false时运行”。这意味着“如果反转变量x的真值,则运行为真。”根据经验,我们知道(或学习)它与“仅当x等于假”时运行相同。就像while (!(x && !x))
表示(?)“始终运行”一样。您可以通过尝试x的所有可能值并记住那些使表达式等于true的人来看到这一点。有一天你会知道它的意思。
它做什么,如何工作,不是的意思,对吗?
答案 4 :(得分:0)
只要x = false,循环就会继续迭代。如果x = true,则循环结束。
答案 5 :(得分:0)
让我们用x
替换red sky
。当天空不红色时,red sky = false
将评估为true
。
反复询问值red sky
是否不正确(只要天空保持蓝色,当然)将导致循环重复。
答案 6 :(得分:0)
我觉得你这里有代码味道。
我更喜欢简单的条件,以保持代码可读。所以,如果你以一段看起来像这样的逻辑结束:
boolean is_something = false;
while (!is_something) {
...
}
也许最好反转变量的含义及其默认值,以摆脱while条件中的否定:
boolean is_not_something = true;
while (is_not_something) {
...
}
请注意,这是一个非常一般的例子。通常,您不需要在变量名中有明确的否定。如果您有一个名为is_empty
的变量,则不必将其称为is_not_empty
,可以将其称为is_full
。
答案 7 :(得分:0)
如果add1为false,则运行(!add1)。由于add1始终为false,因此x始终等于1.