【问题标题】:Truth Table - Assistance真值表 - 协助
【发布时间】:2016-04-02 04:43:39
【问题描述】:

我有一个作业问题。问题基本上如下: 有 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。接下来我很困惑。任何帮助/建议将不胜感激。

谢谢 克里斯

【问题讨论】:

  • 如果(不会(Jane 会游泳,而 bernd 15 岁))——你能推断出吗?
  • 非常感谢 - ThisClark。谢谢你的链接。希望你度过了一个愉快的周末。

标签: java truthtable


【解决方案1】:

这实际上与 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

您应该注意您的特定示例受De Morgan's Laws 之一的约束。

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

所以...

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

真值表告诉您解决该问题所需了解的其余部分。

【讨论】:

  • 感谢 ThisClark。太好了哥们你解释得很精彩。非常感谢。克里斯
  • 不客气。如果您将此标记为已接受的答案(单击复选标记),您将获得第一个代表点数,并将其保存在您的个人资料中,以备将来需要时参考。
【解决方案2】:

我希望我创建的这段代码可以帮助您了解,这是一个使用二进制(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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-27
    相关资源
    最近更新 更多