两个布尔变量既为真又为假的解释 [closed]

Explanation of two boolean variables being both true or both false [closed]

提问人:EonRyan 提问时间:8/22/2021 最后编辑:BohemianEonRyan 更新时间:8/22/2021 访问量:2169

问:


想改进这个问题吗?通过编辑这篇文章来更新问题,使其仅关注一个问题。

2年前关闭。

在教程中,我被要求编写一个表达式如下:

给定布尔变量:

boolean a, b;

编写一个表达式,即 if either 和 are both if 和 are both 。trueabtrueabfalse

我从测验中得到的答案是:

a && b || !a && !b

请解释一下这意味着什么。

java 逻辑

评论

5赞 OneCricketeer 8/22/2021
请先展示您自己对它的理解
0赞 Joachim Sauer 8/22/2021
如果您不能告诉我们您正在遇到什么困难,那么我们无法真正为您提供比普通教程更好的帮助。因此,要么在谷歌上搜索一个,要么解释一下您了解和不理解的部分。
6赞 Andy Turner 8/22/2021
为什么不呢?a == b
1赞 OneCricketeer 8/22/2021
或者为什么不!(a^b)
1赞 Andy Turner 8/22/2021
@OneCricketeer“或者为什么不”,因为这比使用平等:)要晦涩得多我发现布尔值的可读性要高得多(它“吓唬”人的时间要少得多)。^!=

答:

2赞 goatofanerd 8/22/2021 #1

让我们一块一块地看。我打算把 paranthesis 放在事情周围,以使其更有意义。

(a && b) || (!a && !b)

首先,从(a && b)

有了这个,所有这一切都意味着,所以,两者都必须在这个陈述中是正确的a == true AND(&&) b == trueab

二、(!a && !b)

与前一个类似,这意味着 所以,在这个陈述中,两者都必须是假的a == false AND(&&) b == falseab

现在,在两者之间加上一个,这意味着要么两者都必须是真的,要么两者都必须是假的。OR(||)

0赞 Mensch 8/22/2021 #2
a&&b    is only true when a is true and b is true.

一个||如果 (a,b) 之一为真,则 b 为真 假设 a = true 和 b = true,则 !a = false,!b = false(否定)。 换句话说,当 a 和 b 都为假时,语句 !a&&!b 为真,否则为假。 所以语句 a&&b ||当 A 和 B 都为 true( A&&B 将为 true)或当 A 和 B 为 false( !a&&!b 将为 true 时,!a&&!b 为 true) 为 true

0赞 Bohemian 8/22/2021 #3

首先,测验提出了一个糟糕的解决方案。最好的答案很简单:

a == b

但是,要解释表达式,您应该知道,当布尔变量是逻辑表达式的一部分时,其值将成为该表达式的一部分。换句话说,这两个表达式是相同的:a && b || !a && !b

a
a == true

同样,这两个表达式是相同的:

!a
a == false

另请注意,逻辑运算符优先于(即在之前计算)。&&||

把这些放在一起,我们可以转换表达式

a && b || !a && !b

到等价物:

(a == true && b == true) || (a == false && b == false)

然后是英文伪代码:

(a is true AND b is true) OR (a is false AND b is false)