【问题标题】:I have to do a Java challenge showig true/false values as 1 and 0我必须做一个 Java 挑战,将真/假值显示为 1 和 0
【发布时间】:2015-04-06 08:02:55
【问题描述】:

我对 Java 还很陌生,并且正在从一本书中学习。我刚刚在书中了解了强制转换类型和布尔值/逻辑运算符,我遇到了挑战。一个带有真假值的逻辑运算符表程序,我必须对其进行调整,使其显示 1 和 0 而不是真假,所以我想出了这个:

    /* Project 2-2: a truth table for the logical operators.
   show 1 en 0 ipv true en false.
*/

class LogicalOpTableSimon {
 public static void main(String args[]) {
  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 + "\t" + q + "\t");
  p = 0;
  System.out.println(p + "\t" + p);


  p = 1; q = 0;

  System.out.print(p + "\t" + q +"\t");
  System.out.print(q + "\t" + p + "\t");
  System.out.println(p + "\t" + q);

  p = 0; q = 1;

  System.out.print(p + "\t" + q +"\t");
  System.out.print(p + "\t" + q + "\t");
  System.out.println(q + "\t" + q);

  p = 0; q = 0;

  System.out.print(p + "\t" + q +"\t");
  System.out.print(p + "\t" + q + "\t");
  p = 1; q = 0;
  System.out.println(q + "\t" + p);
 }
}

这工作正常,表格显示正确的值。但是,我想知道,因为我刚刚在书中学习了如何转换或转换不同的类型,所以挑战是否意味着使用它?换句话说,我可以使用强制转换/转换来获得相同的结果吗?我尝试了不同的东西,但没有奏效。或者,也许我认为很难。感谢您提供的任何提示:)。对了,原代码是:

    // Project 2-2: a truth table for the logical operators.
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(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));
 }
}

我在互联网上搜索并在书中阅读了更多内容。但我找不到铸造版本或类似的东西。

【问题讨论】:

  • 您不能在 Java 中将 boolean 强制转换为 int。相反,请考虑使用 if-else 语句来显示适当的值。
  • int value = (boolean) ? 1 : 0;
  • 那么,如果我理解正确的话,你需要为每个假值显示 0,为每个真值显示 1?为什么不创建一个方法toInteger(boolean b),并为您显示的每个布尔值调用它?

标签: java casting boolean


【解决方案1】:

如果你只需要使用前两章的内容,那么代码可能看起来像这样

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;
    int x=0;
    System.out.println("P\tQ\tAND\tOR\tXOR\tNOT");

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

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

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

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

【讨论】:

    【解决方案2】:

    无法在booleanint 之间进行转换。 boolean 在 Java 中不是数字类型。

    可以使用以下表达式:

    boolean b = true;
    int i;
    
    i = ( b ? 1 : 0 );
    
    b = ( i != 0 );
    

    【讨论】:

      【解决方案3】:

      在你的代码中试试这个......

      public String returnedValueFromAnd(Boolean p,Boolean q)
      {
          if(p&q)
           { return "true";}
          return "false";
      }
       public String returnedValueFromOR(Boolean p,Boolean q)
      {
          if(p|q)
           { return "true";}
          return "false";
      }
       public String returnedValueFromNegation(Boolean p)
      {
          if(!p)
           { return "true";}
          return "false";
      }
       public String returnedValueFromXOR(Boolean p,Boolean q)
      {
          if(p^q)
           { return "true";}
          return "false";
      }
      

      现在调用要打印值的方法并传递参数 p 和 q(如果适用)。

      【讨论】:

      • 感谢您的回答。我没有?然而或制作自己的方法的一部分,因为我只在 15 的模块 2 中。但是,现在我明白强制转换是一种缩小转换,而不是转换任何不兼容的类型。我自己的一个思考错误 :) 所以,我只能猜测我的调整对于挑战是合法的。挑战并没有说我必须为此使用强制转换或 if 语句。书中没有针对挑战的“解决方案”,所以我永远无法确定。非常感谢您的帮助!
      【解决方案4】:

      我也尝试从同一本书中学习Java,遇到了这个问题并解决了如下。

      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";
      
      }
      

      }

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2011-09-22
        • 1970-01-01
        • 2015-07-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-11-24
        相关资源
        最近更新 更多