将布尔值转换为Int

时间:2012-02-02 14:20:49

标签: java

我正在阅读一个教程,到目前为止,它为您提供了以下代码:

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's0's代替truefalse

我不确定这是否可以通过Casting Incompatible Types来完成,但我认为这是要走的路,因为它就是之前的部分。

有人可以提供一些建议和解释,为什么它有效?

8 个答案:

答案 0 :(得分:3)

这不是教程要求你做的。我认为他们希望您将{em>替换 booleaninttrue1false0完全相同},像这样:

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

这将使您了解整数01的按位运算。

答案 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并将01分配给pq,并确保您在所有情况下都使用java's bitwise operators(乍一看它看起来像你)。 More info on bitwise operation from wikipedia

答案 7 :(得分:0)

只需使用三元运算符:

int logicalInt = boolVal? 1 : 0;

其中“boolVal”是你的布尔变量。