[英]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)
因此,我们一直循环直到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
您将无限循环。
只要!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.