我对作业有疑问。问题基本上如下: 有两个整数变量,例如A和B.这两个整数都包含数据。 使用真值表,如果有的话,以下IF语句测试等同于:
if (!(A == 60 && B == 40))
我将如何解决这个问题。任何建议将不胜感激。我认为我必须创建一个包含三列的表 - 一个名为A,另一个名为B,第三列名为RESULT(是或否)。
陈述:if (!
- 我不确定如何阅读A == 60 && B == 40
部分。换句话说, class SignOnTests(BaseTest):
def test_login_info(self):
#some code
部分基本上告诉我A必须等于60并且在同一时间B必须等于40.然后我感到困惑。任何帮助/建议,将不胜感激。
由于 克里斯
答案 0 :(得分: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
您应该注意,您的特定示例受De Morgan's Laws之一。
的约束P is A = 60
Q is B = 40
¬ is !
∧ is &&
∨ is ||
所以...
!(A && B)
与!A || !B
真值表告诉你解决这个问题需要知道的其余部分。
答案 1 :(得分: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