Truth Table - 将布尔值转换为 1 和 0

Truth Table - Converting boolean value to 1 and 0

我目前正在阅读工作簿,Java 初学者指南。第 2 章有一个创建真相的小项目 table。显示的值采用 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";

但您甚至可以更快地完成(并在创建 str0str1 时删除第一个分配):

str0 = p ? "1" : "2";
str1 = q ? "1" : "2";

EDIT :另请注意,在更改 p 或 [=20 的值时,您必须重新计算 str0str1 =] 如果你愿意的话。所以你可能想像@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).

的每个值

尝试制作如下方法: 私人静态字符串转换(布尔布尔);

以某种方式设置该方法,它会 return 你用“0”和“1”表示假和真,然后在你的打印结构中的任何地方使用该方法,你重新打印布尔值。

感谢大家的提示和提示,最后我的最终代码如下所示。 我知道可能有更简单的方法来做到这一点,但本书希望您利用前两章中的所有内容,所以我也包含了一个控制语句。

觉得还可以的请点赞

谢谢 // 试试这个 2-2:逻辑运算符的真值 table。 包第 2 章;

public class LogicalOpTable {
public static void main(String[] args) {

boolean p, q;
    int a = 0, b = 0;

System.out.println("P\tQ\tAND\tOR\tXOR\tNOT");

p = true; q = true;
    if(p) a = 1;
    else a = 0;
    if(q) b = 1;
    else b = 0;
    System.out.print(a + "\t" + b +"\t");
    System.out.print(printBoolean(p&q) + "\t" + printBoolean (p|q) + "\t");
    System.out.println(printBoolean2(p^q) + "\t" + printBoolean (!p));

p = true; q = false;
    if(p) a = 1;
    else a = 0;
    if(q) b = 1;
    else b = 0;
    System.out.print(a + "\t" + b +"\t");
    System.out.print(printBoolean(p&q) + "\t" + printBoolean (p|q) + "\t");
    System.out.println(printBoolean2(p^q) + "\t" + printBoolean (!p));

p = false; q = true;
    if(p) a = 1;
    else a = 0;
    if(q) b = 1;
    else b = 0;
    System.out.print(a + "\t" + b +"\t");
    System.out.print(printBoolean(p&q) + "\t" + printBoolean (p|q) + "\t");
    System.out.println(printBoolean2(p^q) + "\t" + printBoolean (!p));

p = false; q = false;
    if(p) a = 1;
    else a = 0;
    if(q) b = 1;
    else b = 0;
    System.out.print(a + "\t" + b +"\t");
    System.out.print(printBoolean(p&q) + "\t" + printBoolean (p|q) + "\t");
    System.out.println(printBoolean2(p^q) + "\t" + printBoolean (!p));
}
public static String printBoolean(boolean p) {
    return p ? "1" : "0";
}
public static String printBoolean2(boolean q) {
    return q ? "1" : "0";
}
}

经过长时间的休假,我现在对 Gael 的评论和答案有了更好的理解,我不知道我怎么会这么蠢。请查看下面更新的代码,并请投票支持。谢谢,

package ChapterTwo;

 // Try this 2-2: a truth table for the logical operators. 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;

System.out.print(printBoolean(p) + "\t" + (printBoolean2(q)) +"\t");
System.out.print(printBoolean(p&q) + "\t" + printBoolean (p|q) + "\t");
System.out.println(printBoolean2(p^q) + "\t" + printBoolean (!p));

p = true; q = false;

System.out.print(printBoolean(p) + "\t" + (printBoolean2(q)) +"\t");
System.out.print(printBoolean(p&q) + "\t" + printBoolean (p|q) + "\t");
System.out.println(printBoolean2(p^q) + "\t" + printBoolean (!p));

p = false; q = true;

System.out.print(printBoolean(p) + "\t" + (printBoolean2(q)) +"\t");
System.out.print(printBoolean(p&q) + "\t" + printBoolean (p|q) + "\t");
System.out.println(printBoolean2(p^q) + "\t" + printBoolean (!p));

p = false; q = false;

System.out.print(printBoolean(p) + "\t" + (printBoolean2(q)) +"\t");
System.out.print(printBoolean(p&q) + "\t" + printBoolean (p|q) + "\t");
System.out.println(printBoolean2(p^q) + "\t" + printBoolean (!p));
}
public static String printBoolean(boolean p) {
return p ? "1" : "0";
}
public static String printBoolean2(boolean q) {
    return q ? "1" : "0";

    }
}
public class LogicalOpTabl {
public static void main(String args[]) {

    boolean p, q;
    String a;

    System.out.println("P\tQ\tAND\tOR\tXOR\tNOT");

    p = true;
    q = true;
    a = ((p ? 1 : 0) + "\t" + (q ? 1 : 0) +"\t" + ((p&q)? 1 : 0) + "\t" + ((p|q)? 1:0) + "\t" + ((p^q)? 1 :0) + "\t" + ((!p)? 1 :0));
    System.out.println(a);

    p = true;
    q = false;
    System.out.println((p ? 1 : 0) + "\t" + (q ? 1 : 0) +"\t" + ((p&q)? 1 : 0) + "\t" + ((p|q)? 1:0) + "\t" + ((p^q)? 1 :0) + "\t" + ((!p)? 1 :0));

    p = false;
    q = true;
    System.out.println((p ? 1 : 0) + "\t" + (q ? 1 : 0) +"\t" + ((p&q)? 1 : 0) + "\t" + ((p|q)? 1:0) + "\t" + ((p^q)? 1 :0) + "\t" + ((!p)? 1 :0));

    p = false;
    q = false;
    System.out.println((p ? 1 : 0) + "\t" + (q ? 1 : 0) +"\t" + ((p&q)? 1 : 0) + "\t" + ((p|q)? 1:0) + "\t" + ((p^q)? 1 :0) + "\t" + ((!p)? 1 :0));
    }
}

我也在研究那本书,很失望地发现本书或可下载的 Oracle 清单中没有这个问题的答案。

任何人,我是一个彻头彻尾的程序员菜鸟。上周刚开始看这本书,完全被这个问题卡住了。

这是我能想到的最好的解决方案,仅使用我到目前为止从书中学到的知识(2-2 问题 6)

class LogicalOpTable6 {
public static void main(String args[]) {
    boolean p, q;

    System.out.println("P\tQ\tAND\tOR\tXOR\tNOT");

    p = true; q = true;
    if(p)
        System.out.print("1" + "\t");
    if(!p)
        System.out.print("0" + "\t");
    if(q)
        System.out.print("1" + "\t");
    if(!q)
        System.out.print("0" + "\t");
    if(p&q)
        System.out.print("1" + "\t");
    if(!(p&q))
        System.out.print("0" + "\t");
    if(p|q)
        System.out.print("1" + "\t");
    if(!(p|q))
        System.out.print("0" + "\t");
    if(p^q)
        System.out.print("1" + "\t");
    if(!(p^q))
        System.out.print("0" + "\t");
    if(!p)
        System.out.println("1");
    if(!(!p))
        System.out.println("0");

    /* 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;
    if(p)
        System.out.print("1" + "\t");
    if(!p)
        System.out.print("0" + "\t");
    if(q)
        System.out.print("1" + "\t");
    if(!q)
        System.out.print("0" + "\t");
    if(p&q)
        System.out.print("1" + "\t");
    if(!(p&q))
        System.out.print("0" + "\t");
    if(p|q)
        System.out.print("1" + "\t");
    if(!(p|q))
        System.out.print("0" + "\t");
    if(p^q)
        System.out.print("1" + "\t");
    if(!(p^q))
        System.out.print("0" + "\t");
    if(!p)
        System.out.println("1");
    if(!(!p))
        System.out.println("0");

    /* 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;
    if(p)
        System.out.print("1" + "\t");
    if(!p)
        System.out.print("0" + "\t");
    if(q)
        System.out.print("1" + "\t");
    if(!q)
        System.out.print("0" + "\t");
    if(p&q)
        System.out.print("1" + "\t");
    if(!(p&q))
        System.out.print("0" + "\t");
    if(p|q)
        System.out.print("1" + "\t");
    if(!(p|q))
        System.out.print("0" + "\t");
    if(p^q)
        System.out.print("1" + "\t");
    if(!(p^q))
        System.out.print("0" + "\t");
    if(!p)
        System.out.println("1");
    if(!(!p))
        System.out.println("0");

    /* 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;
    if(p)
        System.out.print("1" + "\t");
    if(!p)
        System.out.print("0" + "\t");
    if(q)
        System.out.print("1" + "\t");
    if(!q)
        System.out.print("0" + "\t");
    if(p&q)
        System.out.print("1" + "\t");
    if(!(p&q))
        System.out.print("0" + "\t");
    if(p|q)
        System.out.print("1" + "\t");
    if(!(p|q))
        System.out.print("0" + "\t");
    if(p^q)
        System.out.print("1" + "\t");
    if(!(p^q))
        System.out.print("0" + "\t");
    if(!p)
        System.out.println("1");
    if(!(!p))
        System.out.println("0");

    /* System.out.print(p + "\t" + q + "\t");
    System.out.print((p&q) + "\t" + (p|q) + "\t");
    System.out.println((p^q) + "\t" + (!p)); */
}

它有很多行,我很清楚,但是在为第一行输入 if 语句后 table 它们可以复制到其他三行。

class LogicalOpTable {
        public static void main(String[] args) {

                System.out.println("P\tQ\tAND\tOR\tXOR\tNOT(P)");

                    boolean P, Q;
            
           
                P = true;
                Q = true;

                    if(P) {
                           System.out.print("1\t");
                    }
                    else { System.out.print("0\t");
                    }
                    if(Q) {
                           System.out.print("1\t");
                    }
                    else { System.out.print("0\t");
                    }
                    if(P&Q) {
                           System.out.print("1\t");
                    }
                    else { System.out.print("0\t");
                    }
                    if(P|Q) {
                           System.out.print("1\t");
                    }
                    else { System.out.print("0\t");
                    }
                    if(P^Q) {
                           System.out.print("1\t");
                    }
                    else { System.out.print("0\t");
                    }
                    if(!P) {
                           System.out.print("1\n");
                    }
                    else { System.out.print("0\n");
                    }
                    
                    
                P = true;
                    Q = false;
            
                    if(P) {
                           System.out.print("1\t");
                    }
                    else { System.out.print("0\t");
                    }
                    if(Q) {
                           System.out.print("1\t");
                    }
                    else { System.out.print("0\t");
                    }
                    if(P&Q) {
                           System.out.print("1\t");
                    }
                    else { System.out.print("0\t");
                    }
                    if(P|Q) {
                           System.out.print("1\t");
                    }
                    else { System.out.print("0\t");
                    }
                    if(P^Q) {
                           System.out.print("1\t");
                    }
                    else { System.out.print("0\t");
                    }
                    if(!P) {
                           System.out.print("1\n");
                    }
                    else { System.out.print("0\n");
                    }
                    

            P = false;
                    Q = true;
            
                    if(P) {
                           System.out.print("1\t");
                    }
                    else { System.out.print("0\t");
                    }
                    if(Q) {
                           System.out.print("1\t");
                    }
                    else { System.out.print("0\t");
                    }
                    if(P&Q) {
                           System.out.print("1\t");
                    }
                    else { System.out.print("0\t");
                    }
                    if(P|Q) {
                           System.out.print("1\t");
                    }
                    else { System.out.print("0\t");
                    }
                    if(P^Q) {
                           System.out.print("1\t");
                    }
                    else { System.out.print("0\t");
                    }
                    if(!P) {
                           System.out.print("1\n");
                    }
                    else { System.out.print("0\n");
                    }
                    

                P = false;
                Q = false;
            
                    if(P) {
                           System.out.print("1\t");
                    }
                    else { System.out.print("0\t");
                    }
                    if(Q) {
                           System.out.print("1\t");
                    }
                    else { System.out.print("0\t");
                    }
                    if(P&Q) {
                           System.out.print("1\t");
                    }
                    else { System.out.print("0\t");
                    }
                    if(P|Q) {
                           System.out.print("1\t");
                    }
                    else { System.out.print("0\t");
                    }
                    if(P^Q) {
                           System.out.print("1\t");
                    }
                    else { System.out.print("0\t");
                    }
                    if(!P) {
                           System.out.print("1\n");
                    }
                    else { System.out.print("0\n");
                    }
}
}

我相信这是解决方案:

// Try this 2-2: a truth table for the logical operators.
public class Example {
    public static void main(String[] args) {

        int p, q;
        boolean b;

        System.out.println("P\tQ\tAND\tOR\tXOR\tNOT");

        p = 1; q = 1;
        b = 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)+1));

        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" + ((p*-p)+1));

        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" + ((p*-p)+1));

        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" + ((p*-p)+1));

    }
}