我目前正在研究工作簿Java A入门指南。第2章有一个创建真值表的小项目。显示的值的格式为true或false。目标是显示1和0。
我已经尝试过下面的代码来做到这一点,但是String.valueOf
方法不适用于所有表达式。我不知道该怎么做。
package ChapterTwo;
public class LogicalOpTable {
public static void main(String[] args) {
boolean p, q;
System.out.println("P\tQ\tAND\tOR\tXOR\tNOT");
p = true; q = true;
String str0 = String.valueOf(p);
String str1 = String.valueOf(q);
str0 = true ? "1" : "2";
str1 = true ? "1" : "2";
System.out.print(p + "\t" + q +"\t");
System.out.print((p&q) + "\t" + (p|q) + "\t");
System.out.println((p^q) + "\t" + (!p));
p = true; q = false;
System.out.print(str0 + "\t" + str1 +"\t");
System.out.print((p&q) + "\t" + (p|q) + "\t");
System.out.println((p^q) + "\t" + (!p));
p = false; q = true;
System.out.print(p + "\t" + q +"\t");
System.out.print((p&q) + "\t" + (p|q) + "\t");
System.out.println((p^q) + "\t" + (!p));
p = false; q = false;
System.out.print(p + "\t" + q +"\t");
System.out.print((p&q) + "\t" + (p|q) + "\t");
System.out.println((p^q) + "\t" + (!p));
}
}
最佳答案
您在编写此文件时犯了一个错误:
str0 = true ? "1" : "2";
str1 = true ? "1" : "2";
您可能是说:
str0 = (str0 == "true") ? "1" : "2";
str1 = (str1 == "true") ? "1" : "2";
但是您甚至可以更快地执行此操作(并在创建
str0
和str1
时删除第一次分配):str0 = p ? "1" : "2";
str1 = q ? "1" : "2";
编辑:还请注意,如果要更改
str0
或str1
的值,则必须重新计算p
和q
。因此,您可能想编写一个子函数,如@DThought回答。编辑2:子功能可能如下:
static String printBoolean(boolean b) {
return b ? "1" : "2";
}
并在您的主要代码中使用此功能,如下所示:
System.out.print(printBoolean(p&q) + "\t" + printBoolean(p|q) + "\t");
另请注意,您无需编写相同代码的4次。您可以创建循环以遍历
(p,q)
的每个值。