1

我有一个作业问题。问题基本上如下: 有 2 个整数变量 A 和 B。这两个整数都包含数据。使用真值表,如果有的话,以下 IF 语句测试等效于:

if (!(A == 60 && B == 40))   

 -   if (A != 60 || B != 40)
 -  if (A == 60 && (!(B == 40)))

请问我将如何解决这个问题。任何建议将不胜感激。我认为我必须创建一个包含三列的表 - 一列称为 A,另一列 B,第三列称为 RESULT(是或否)。

声明: if (!(A == 60 && B == 40)) - 我不确定如何阅读该部分if (!。换句话说,这部分A == 60 && B == 40本质上是在告诉我 A 必须等于 60,同时 B 必须等于 40。接下来我很困惑。任何帮助/建议将不胜感激。

谢谢克里斯

4

2 回答 2

0

这实际上与 Java 本身无关。是的,您可以通过编写真值表来解决。这!意味着逻辑否定与否或者您甚至可能认为它是相反的。就个人而言,我发现建立特定真值表的所有部分很有帮助。

   a    |   b    |    !b     |       a & b       |      a & !b        |      !(a & b)
 ----------------------------------------------------------------------------------------
 A = 60 | B = 40 | !(B = 40) | (A = 60 & B = 40) | A = 60 & !(B = 40) | !(A = 60 & B = 40)
   T    |   T    |     F     |         T         |        F           |          F
   T    |   F    |     T     |         F         |        T           |          T
   F    |   T    |     F     |         F         |        F           |          T
   F    |   F    |     T     |         F         |        F           |          T

您应该注意您的特定示例受德摩根定律之一的约束。

在此处输入图像描述

P is A = 60  
Q is B = 40  
¬ is !  
∧ is &&   
∨ is ||   

所以...

!(A && B)真的和!A || !B

真值表告诉你解决这个问题需要知道的其余部分。

于 2016-04-02T05:42:20.603 回答
0

我希望我创建的这段代码可以帮助您了解,这是一个使用二进制(0 和 1)数字而不是布尔值(TRUE,FALSE)显示真值表的简单代码

/**
 * Truth table for the logical operators. Using
 * zeros and ones.
 * 
 * @ Samuel Mayol
 */

public class LogicalOpTable {
    public static void main(String[] args) {

        boolean p, q; 
        byte p1, q1, pAndQ, pOrQ, pXORq, notP, pq;

        System.out.println("Using 0s and 1s for the Truth Table:");
        System.out.println("P\tQ\tAND\tOR\tXOR\tNOT"); // using tabs \t

        pq =1;

        switch (pq) { // without break it will execute the whole swich case statements
            case 1 : 
                p = true; q = true;
                p1=(byte) (p?1:0); // The ? : operator in Java
                q1=(byte) (q?1:0); // Short form for Java If statement
                pAndQ=(byte) ((p&q)?1:0); 
                pOrQ=(byte) ((p|q)?1:0);
                pXORq=(byte) ((p^q)?1:0);
                notP= (byte) ((!p)?1:0);

                System.out.print(p1 + "\t" + q1 + "\t");
                System.out.print(pAndQ + "\t" + pOrQ + "\t");
                System.out.println(pXORq + "\t" + notP);
            case 2: 
                p = true; q = false;
                p1=(byte) (p?1:0); // The ? : operator in Java
                q1=(byte) (q?1:0); // Short form for Java If statement
                pAndQ=(byte) ((p&q)?1:0); 
                pOrQ=(byte) ((p|q)?1:0);
                pXORq=(byte) ((p^q)?1:0);
                notP= (byte) ((!p)?1:0);

                System.out.print(p1 + "\t" + q1 + "\t");
                System.out.print(pAndQ + "\t" + pOrQ + "\t");
                System.out.println(pXORq + "\t" + notP);
            case 3: 
                p = false; q = true;
                p1=(byte) (p?1:0); // The ? : operator in Java
                q1=(byte) (q?1:0); // Short form for Java If statement
                pAndQ=(byte) ((p&q)?1:0); 
                pOrQ=(byte) ((p|q)?1:0);
                pXORq=(byte) ((p^q)?1:0);
                notP= (byte) ((!p)?1:0);

                System.out.print(p1 + "\t" + q1 + "\t");
                System.out.print(pAndQ + "\t" + pOrQ + "\t");
                System.out.println(pXORq + "\t" + notP);
            case 4: 
                p = false; q = false;
                p1=(byte) (p?1:0); // The ? : operator in Java
                q1=(byte) (q?1:0); // Short form for Java If statement
                pAndQ=(byte) ((p&q)?1:0); 
                pOrQ=(byte) ((p|q)?1:0);
                pXORq=(byte) ((p^q)?1:0);
                notP= (byte) ((!p)?1:0);

                System.out.print(p1 + "\t" + q1 + "\t");
                System.out.print(pAndQ + "\t" + pOrQ + "\t");
                System.out.println(pXORq + "\t" + notP);
        }
    }
}

运行此代码后的结果是:

Using 0s and 1s for the Truth Table:
P   Q   AND OR  XOR NOT
1   1   1   1   0   0
1   0   0   1   1   0
0   1   0   1   1   1
0   0   0   0   0   1
于 2017-03-28T00:15:42.983 回答