在false boolean上使用not语句

时间:2014-12-19 00:29:43

标签: java boolean

我总是假设如果声明声明为false,例如boolean valid = false,那么写!valid将反过来valid为真。然而,这是一个完全错误的错误观念吗?例如,在下面的代码中;

for (int check=3; check <= primeLimit; check += 2) {
    boolean divisorFound=false;
    for (int div=3; div<=Math.sqrt(check) && !divisorFound; div += 2) {
        if (check%div==0)
            divisorFound=true;
    }

第二个for循环搜索divisorFound是否为false? 因为如果暗示除数是假的,那么它不会只是说:

div<=Math.sqrt(check) && divisorFound;

2 个答案:

答案 0 :(得分:5)

我假设您没有编写此代码并试图了解其目的是什么。内循环应该继续,直到找到除数。因此,它会反复检查!divisorFound是否评估为true。换句话说,&#34;有一个除数而不是呢?&#34;。

找到除数后,divisorFound设置为true,表达式!divisorFound的计算结果为false,因此循环将停止。

如果使用了您建议的条件检查:

div<=Math.sqrt(check) && divisorFound

永远不会到达循环体。 divisorFound开始为false,因此继续条件会立即失败,循环将终止。

答案 1 :(得分:1)

div小于Math.sqrt(check)并且未找到除数时,第二个循环是继续循环。当divisorFound设置为true时,内部循环将失败其条件。

我认为你必须误读代码,因为这是一个非常直接的布尔条件。