我正在阅读一个教程,到目前为止,它为您提供了以下代码:
boolean p, q;
System.out.println("P\tQ\tAND\tOR\tXOR\tNOT");
p = true; 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 = true; 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));
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));
任务是修改程序,使其使用1's
和0's
代替true
和false
。
我不确定这是否可以通过Casting Incompatible Types来完成,但我认为这是要走的路,因为它就是之前的部分。
有人可以提供一些建议和解释,为什么它有效?
答案 0 :(得分:3)
这不是教程要求你做的。我认为他们希望您将{em>替换 boolean
与int
,true
与1
和false
与0
完全相同},像这样:
int p, q;
System.out.println("P\tQ\tAND\tOR\tXOR\tNOT");
p = 1; q = 1;
System.out.print(p + "\t" + q + "\t");
System.out.print((p&q) + "\t" + (p|q) + "\t");
System.out.println((p^q) + "\t" + (1-p)); // EDIT: was !p
这将使您了解整数0
和1
的按位运算。
答案 1 :(得分:2)
这是我的解决方案 //使用1和0的逻辑表
class LogicOpTable {
public static void main(String args[]) {
int p, q;
System.out.println("P\tQ\t"+
"AND\tOR\tXOR\tNOT");
for (p = 1; p >= 0; p--) {
for (q = 1; q >= 0; q--) {
System.out.println(p + "\t" + q + "\t" +
(p & q) + "\t" + (p | q) +
"\t" + (p ^ q) + "\t" + (1 - p));
}
}
} }
答案 2 :(得分:1)
您不能将布尔值强制转换为int。这些是完全不同的类型。
但是你可以编写一个实用程序方法booleanToInt(boolean b)
,它将布尔值转换为int。
答案 3 :(得分:1)
您可以将整数与按位运算符一起使用:
int p, q;
System.out.println("P\tQ\tAND\tOR\tXOR\tNOT");
p = 1;
q = 1;
System.out.print(p + "\t" + q + "\t");
System.out.print((p & q) + "\t" + (p | q) + "\t");
System.out.println((p ^ q) + "\t" + (1-p));
p = 1;
q = 0;
System.out.print(p + "\t" + q + "\t");
System.out.print((p & q) + "\t" + (p | q) + "\t");
System.out.println((p ^ q) + "\t" + (1-p));
p = 0;
q = 1;
System.out.print(p + "\t" + q + "\t");
System.out.print((p & q) + "\t" + (p | q) + "\t");
System.out.println((p ^ q) + "\t" + (1-p));
p = 0;
q = 0;
System.out.print(p + "\t" + q + "\t");
System.out.print((p & q) + "\t" + (p | q) + "\t");
System.out.println((p ^ q) + "\t" + (1-p));
返回:
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
答案 4 :(得分:0)
您不能直接从布尔值转换为Java中的int。我会按照
的方式添加一个方法public int getBoolValue(boolean b) {
return b ? 1 : 0
}
答案 5 :(得分:0)
你不能在java中将int转换为boolean。考虑使用
boolean x = p & q;
boolean y = p | q;
(x ? 1 : 0)
例如
System.out.print((p&q) + "\t" + (p|q) + "\t");
可能会成为:
System.out.print(x + "\t" + y + "\t");
答案 6 :(得分:0)
看起来您只需要将变量声明为int
并将0
和1
分配给p
和q
,并确保您在所有情况下都使用java's bitwise operators(乍一看它看起来像你)。 More info on bitwise operation from wikipedia
答案 7 :(得分:0)
只需使用三元运算符:
int logicalInt = boolVal? 1 : 0;
其中“boolVal”是你的布尔变量。