if条件成立时的虚假表达

时间:2015-11-15 18:12:52

标签: java

我今天研究了条件材料并做了一些功课,其中一些非常简单,其中一些很难实现。
但是,我得到了以下代码:

boolean bool1, bool2, bool3;
bool1 = false;
bool2 = true;
bool3 = true;
    if(bool1 == true || bool2 == true && bool3 == true)
        System.out.println("true");
    else
        System.out.println("false");

我不明白为什么这个程序返回true false 语句 - bool1在程序开头被声明为FALSE,并且当它被检查时(bool1 == true if 应返回false。

7 个答案:

答案 0 :(得分:1)

问题出在以下几行:

if(bool1 == true || bool2 == true && bool3 == true)

在本声明中,您要求两个条件:

  1. Bool1 == true
  2. Bool2 == true && Bool3 == true
  3. 正如您可能已经提到的,||表示“或”。 在您的代码中,您已将Bool2Bool3都声明为true。因此,if语句中的第二个条件是正确的,并且会导致块继续,在您的情况下将打印True

      

    我认为您要做的是以下内容:

         
        
    1. Bool1Bool2(或两者)是真的。 AND
    2.   
    3. Bool3是真的。
    4.         

      在这种情况下,您将不得不使用以下代码:

      if((bool1 == true || bool2 == true) && bool3 == true)
      

答案 1 :(得分:1)

让我们稍微分解一下:

bool1 == true // FALSE : because bool1 has the value of "false"
bool2 == true // TRUE : because bool2 has a value of "true"
bool3 == true // TRUE : because bool2 has a value of "true"

让我们回到表达式并替换:

(FALSE || TRUE && TRUE)

FALSE || ...:由于它是||,第一个值是false,我们必须检查第二个值。

TRUE && ...:现在我们正在检查第二个值,因为它是true而我们正在使用&&,我们必须检查第二个表达式。由于在这种情况下它是true,因此整个表达式变为TRUE

更多信息

Wiki's Page for Boolean Expressions

答案 2 :(得分:0)

if(bool1 == true || bool2 == true && bool3 == true)
            System.out.println("true");

上面的if语句说,如果bool1或bool2为真,如果bool3为true,请打印" true"

  

了解更多关于||的信息操作

上面的运算符意味着,至少有两个表达式应该是真的。

&&,所有表达式都必须为true。 ||,至少一个就足够了。

答案 3 :(得分:0)

||代表OR。如果OR的左侧或右侧为TRUE,则结果为TRUE。右侧为TRUE,这就是您得到结果为TRUE的原因。

答案 4 :(得分:0)

  

if(bool1 == true || bool2 == true&& bool3 == true)

&&优先于||,因此首先评估bool2 == true && bool3 == true(== true)。条件变为:

  

if(bool1 == true || true)

也评估为true。因此,你得到了真实的"作为输出。

答案 5 :(得分:0)

由于OR运算符,条件返回true:||。  如果旁边的两个表达式中至少有一个为真,则此运算符返回true。在你的情况下,你有真或假,因此是真的。

答案 6 :(得分:0)

那是因为||表示'或'而&&表示'和'。所以基本上在你的情况下,如果bool1bool2为真,那么条件是正确的。尝试将代码更改为bool2false的代码,您将看到该程序将返回false语句。