需要布尔逻辑的帮助

时间:2014-10-28 00:52:06

标签: java boolean

我正在我的高中参加AP计算机科学课程,为了我们的练习测验,我得到的所有问题都是正确的,除了这个。你能解释一下吗?



在以下语句中,a和b是布尔变量:

在这里输入代码     布尔c =(a&& b)|| !(a || b);

在什么条件下,c的值是真的?

  • 甲。仅当a的值不同于b的值时才<。li>
  • B中。仅当a的值与b的值相同时才<。li>
  • ℃。只有当a和b都是真的时。
  • d。只有当a和b都是假的时候。
  • 电子。对于a和b的所有值,c的值都为真。

2 个答案:

答案 0 :(得分:2)

让我们找出答案,

boolean[] test = { true, false };
for (boolean a : test) {
    for (boolean b : test) {
        boolean c = (a && b) || !(a || b);
        System.out.printf("a=%s, b=%s = %s%n", a, b, c);
    }
}

输出

a=true, b=true = true
a=true, b=false = false
a=false, b=true = false
a=false, b=false = true

所以你的测验问题的答案是 B.仅当a的值与b的值相同时才<。em>

答案 1 :(得分:1)

如果您不想编写代码并像我一样喜欢做真值表,那么它也会告诉您正确的答案:

a b    (a && b) ||  !(a || b)
0 0     0 0 0    1  1 0  0 0      <- this row
0 1     0 0 1    0  0 0  1 1
1 0     1 0 0    0  0 1  1 0
1 1     1 1 1    1  0 1  1 1      <- this row

所以它是 B。仅当a的值与b的值相同时才<。em>

如果SO支持LaTeX命令,这看起来会好得多......