繁体   English   中英

Java初学者布尔问题

[英]Java Beginner Boolean Question

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

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

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

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

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您将无限循环。

只要!x为真,循环就会重复。 换句话说,只要x为假,它就会重复。

始终检查布尔条件是否为真。 因此, while (!x)表示x不为真,即x为假。

更新:您发布的代码是一个无限循环,因为!add1评估为true,并且在循环内从未更改。

我感到没有人真正(试图)解释它的意思

while (!x)并不真正意味着什么。 这只是计算机的一些说明。 这并不意味着在x为true或false或诸如此类的情况下进行填充。 !x是一个表达式,如果x = false ,则该表达式产生true 计算机实际上通过应用来计算true ! 关于x的值: false

while(!x)并不意味着“当x等于false时运行”。 它的含义类似于“如果将变量x的真值取反则运行,则运行”。 根据经验,我们知道(或得知)它与“仅在x等于false时运行”相同。 就像while (!(x && !x))意味着(?)“始终运行”。 您可以通过尝试x的所有可能值并记住使表达式等于true的那些值来查看此情况。 有一天,您将只知道它的“含义”。

是做什么的,它如何工作的 ,不是什么意思 ,对不对?

如果add1为false,则while(!add1)运行。 由于add1始终为false,因此x始终等于1。

只要x = false,循环将继续迭代。 如果x = true,则循环将结束。

让我们用red sky替换x 当天空不是红色时, red sky = false将被评估为true 反复询问red sky值是否不正确 (当然,只要天空保持蓝色),就会导致循环重复。

我认为您在这里有代码味道。

我更喜欢使用简单的while条件,以保持代码的可读性。 因此,如果您以如下逻辑结尾:

boolean is_something = false;
while (!is_something) {
    ...
}

也许最好同时反转变量的含义及其默认值,以消除while条件中的否定:

boolean is_not_something = true;
while (is_not_something) {
    ...
}

请注意,这是一个非常普通的示例。 通常,您不需要在变量名称中使用明确的取反。 如果您有一个名为is_empty的变量,则不is_not_empty其称为is_not_empty ,而可以将其称为is_full

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM