我今天研究了条件材料并做了一些功课,其中一些非常简单,其中一些很难实现。
但是,我得到了以下代码:
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。
答案 0 :(得分:1)
问题出在以下几行:
if(bool1 == true || bool2 == true && bool3 == true)
在本声明中,您要求两个条件:
Bool1 == true
或Bool2 == true && Bool3 == true
。正如您可能已经提到的,||
表示“或”。
在您的代码中,您已将Bool2
和Bool3
都声明为true
。因此,if语句中的第二个条件是正确的,并且会导致块继续,在您的情况下将打印True
。
我认为您要做的是以下内容:
Bool1
或Bool2
(或两者)是真的。 AND- 醇>
Bool3
是真的。在这种情况下,您将不得不使用以下代码:
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
答案 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)
那是因为||
表示'或'而&&
表示'和'。所以基本上在你的情况下,如果bool1
或bool2
为真,那么条件是正确的。尝试将代码更改为bool2
到false
的代码,您将看到该程序将返回false
语句。