我无法理解这个问题的答案,需要更有经验的 Java 从业者提供意见。
仅当 boolean 表达式为 true 时,下列哪项才会计算为 true A
、B
、和 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。仅当A
、B
和C
均为假时才会发生这种情况。当 A
和 B
为 false 并且 C
为 true 时,选项 A 的计算结果为 true。在选项 B 中,如果 A
、B
或 C
中的任何一个为 false,则 boolean 表达式的计算结果为真的。在选项 D 中,如果 A
、B
或 C
中的任何一个为 false,则 boolean 表达式的计算结果为 true,因为我们有 !(假)
。要使选项 E 计算为 true,只需 A
为 false。由于 true||(any)
的计算结果为 true,因此 B
和 C
都可以为 true 或 false。
最佳答案
我认为您只需要一些释义,以及对正在发生的事情进行更图形化的解释。
基础知识
或者
如果其中一个操作数是操作数
(例如A
、 B
)是正确的。所以在真值表中,看起来像这样:
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,但如果 A
、B
和 C
包含,则它将计算为 false一个假的;而问题明确指定全部都必须为假。
希望这对您有所帮助!
关于java - 评估 boolean 表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20275551/