java - 评估 boolean 表达式

标签 java computer-science

我无法理解这个问题的答案,需要更有经验的 Java 从业者提供意见。

仅当 boolean 表达式为 true 时,下列哪项才会计算为 true AB C 都是假的吗?

(A) !A && !(B && !C)
(B) !A || !B || !C
(C) !(A || B || C)
(D) !(A && B && C)
(E) !A || !(B || !C)

我的答案是 D,因为我的印象是所有 boolean 表达式都是假的,但答案是 C。

答案说明

(C) 为了使 !(A || B || C) 为 true,(A || B || C) 必须评估为 false。仅当ABC为假时才会发生这种情况。当 AB 为 false 并且 C 为 true 时,选项 A 的计算结果为 true。在选项 B 中,如果 ABC 中的任何一个为 false,则 boolean 表达式的计算结果为真的。在选项 D 中,如果 ABC 中的任何一个为 false,则 boolean 表达式的计算结果为 true,因为我们有 !(假)。要使选项 E 计算为 true,只需 A 为 false。由于 true||(any) 的计算结果为 true,因此 BC 都可以为 true 或 false。

最佳答案

我认为您只需要一些释义,以及对正在发生的事情进行更图形化的解释。

基础知识

或者

如果其中一个操作数是操作数(例如AB)是正确的。所以在真值表中,看起来像这样:

A   B   OUTPUT
f   f   f
f   t   t
t   f   t
t   t   t

这对您有何影响

如您所见,OR 逻辑输出 false 的唯一方法是所有操作数都为 false。问题指出仅当 boolean 表达式 A、B 和 C 都为假时?

该列表中唯一符合该标准的确实是 C。让我们看一个示例:

Assume A, B and C = False.
// We'll now test if option C is the correct one.

C: !(A || B || C)
// Let's plug in our values.
C: !(False || False || False)
// And let's simplify it. False || False || False = False.
C: !(False)
C: True.
// Success! Now we need to test it when one of the values are true.

C: !(True || False || False)
// Let's simplify again. True || Anything = True.
C: !(True).
C: False.

成功!现在我们知道,通过更改其中一个值,我们会得到 False。因为无论我们更改哪一个,我们都通过演示证明了 C 等于 False iff(当且仅当) A,B,C = False.

为什么不是D?

让我们看看 AND 逻辑的真值表。

A   B   OUTPUT
f   f   f
f   t   f
t   f   f
t   t   t

如您所见,AND 输出 true 的唯一方式是所有参数都为 true,否则将输出错误的。虽然这意味着 D 将计算为 false,但如果 ABC 包含,则它将计算为 false一个假的;而问题明确指定全部都必须为假。

希望这对您有所帮助!

关于java - 评估 boolean 表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20275551/

相关文章:

java - Logback SizeBasedTriggeringPolicy 没有滚动

java - JAVA 中的 GAE DataStore 查询过滤器与 Query.FilterOperator.EQUAL 无法与数值进行比较

algorithm - 如果算法的上限和下限相同会怎样?

javascript - 在 JavaScript(NodeJS)中从 MongoDB ObjectId 获取唯一的整数?

c - 大量递归函数背后实际上发生了什么?

java - Java中应该使用哪种数据结构

java - 编写使用 TTS(文本转语音)的程序应该从哪里开始?

java - EJB 2.0 与 EJB 3.0

java - 套接字 - 无连续响应

regex - 具有重复字符的正则表达式