Java初学者布尔问题

时间:2010-10-01 04:11:57

标签: java types boolean

好的,我可以说我有boolean x = false。如果我有一个循环说while (!x)这意味着x是非假(true)还是x不是真(假)?

编辑: 好吧我有点困惑,我想我会得到不同的答案。所以,如果我有

 int x=0;
 boolean add1=false;
 while (!add1){
        x=1;
}

在这种情况下x的最终值是多少?

8 个答案:

答案 0 :(得分:16)

x=false;
while (!x)

替换x的值

while(!false)

现在!是逻辑补码运算符,它反转了布尔值,所以得到

while(true)  

所以我们一直循环直到xfalse!xtrue

请注意,变量的值可能会在循环体中发生变化,从而导致循环中断。考虑一个典型的搜索程序,它使用名为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,因此!add1true,因此我们输入了while循环并将x更改为1 。由于add1的值在循环中没有变化,并且没有breakreturn,因此您可以无限循环。

答案 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.