【问题标题】:Char cannot be converted to boolean?字符不能转换为布尔值?
【发布时间】:2016-06-16 06:37:59
【问题描述】:

这是我做的第一个项目,所以我知道有很多错误。我正在尝试使用嵌套的 if else 语句创建一个计算器。我得到的唯一错误是在我得到的 if 语句中我不能从 char 转到 boolean。我不知道为什么它认为我正在尝试更改为布尔值,但我猜测“= A”等可能使它认为?任何建议将不胜感激。

public static void main(String[] args) { //main class
    char result = 0; //define and declare variables
    double firstNumber = 0;
    double secondNumber = 0;
    double answer = 0;

    System.out.println("Calculator Program\n"); //Text for user
    System.out.println("Choose how to proceed:\n");
    System.out.println("A. Add\n");
    System.out.println("B. Subtract\n");
    System.out.println("C. Multiply\n");
    System.out.println("D. Divide\n");

    Scanner userInput = new Scanner(System.in); //create new Scanner
    result = userInput.next().charAt(0); //Take only the first letter entered

    if (result = A){

        System.out.println("Please enter the first number: ");
            firstNumber = userInput.nextDouble(); //redefine first number
                userInput.next(); //clears line
        System.out.println("Please enter the second number: ");
            secondNumber = userInput.nextDouble(); //redefine second number 
                userInput.next(); //clears line

        answer = firstNumber + secondNumber; //algorithim 
        System.out.println("Answer: " + firstNumber + " + " + secondNumber + " = " + answer);//print answer

                   }

            else if ( result = B){
                   System.out.println("Please enter the first number: ");
                    firstNumber = userInput.nextDouble(); //redefine first number
                        userInput.next(); //clears line
                System.out.println("Please enter the second number: ");
                    secondNumber = userInput.nextDouble(); //redefine second number 
                        userInput.next(); //clears line

                answer = firstNumber - secondNumber; //algorithim 
                System.out.println("Answer: " + firstNumber + " - " + secondNumber + " = " + answer);//print answer

                                }

                    else if ( result = C){
                          System.out.println("Please enter the first number: ");
                           firstNumber = userInput.nextDouble(); //redefine first number
                               userInput.next(); //clears line
                       System.out.println("Please enter the second number: ");
                           secondNumber = userInput.nextDouble(); //redefine second number 
                               userInput.next(); //clears line

                       answer = firstNumber * secondNumber; //algorithim 
                       System.out.println("Answer: " + firstNumber + " * " + secondNumber + " = " + answer);//print answer
                                           }

                            else if ( result = D){
                              System.out.println("Please enter the first number: ");
                             firstNumber = userInput.nextDouble(); //redefine first number
                                 userInput.next(); //clears line
                         System.out.println("Please enter the second number: ");
                             secondNumber = userInput.nextDouble(); //redefine second number 
                                 userInput.next(); //clears line

                         answer = firstNumber / secondNumber; //algorithim 
                         System.out.println("Answer: " + firstNumber + " / " + secondNumber + " = " + answer);//print answer 
                                      }



}

}

【问题讨论】:

  • 赋值与相等。 (= vs. ==)字符文字用单引号括起来('A')。
  • 正确:赋值表达式的类型是赋值给的变量的类型。所以表达式aChar = '?' 被键入为char,但if 只接受boolean 类型的表达式。那么问题是“为什么 = 没有像预期的那样?”,有很多现有的教程/书籍/参考资料 :)

标签: java char boolean


【解决方案1】:

char 无法转换为boolean

您似乎想进行检查。你可以这样做,

String sum = "0+3";

boolean isPlus = (sum.charAt(1) == '+');

isPlus 现在将成立,因为sum 的索引 1 处的字符是“+”

【讨论】:

  • 或者他在if 语句中使用了赋值运算符。
  • @JonnyHenly 是的。我也将其包含在我的答案中,展示了 == 如何生成布尔值
【解决方案2】:

你这样检查:

if (result == 'A')

A 更改为'A'= 更改为==

【讨论】:

    【解决方案3】:

    在 if 块中,您将 A 分配给结果。 你应该这样做 if(result == 'A')//'A' not A

    【讨论】:

      【解决方案4】:

      为了匹配字符,您需要将 if 语句更改为 if(result == 'A') 而不是 if(result == A)

      下面的代码会让你更清楚:

          import java.util.Scanner;
      public class checkBoolToChar {
          public static void main(String[] args) {
              char a  = 0;
              Scanner in = new Scanner(System.in);
              a = in.next().charAt(0);
      
              if(a ==  'A'){
                  System.out.println("Match ");
              }
          }
      }
      

      【讨论】:

        【解决方案5】:

        当你把条件写成时

            if(result = A)
        

        它实际上是将值 A 分配给结果变量。现在,由于 A 没有写在引号中,它假定 A 是一个变量,但由于它没有在程序的任何地方声明,它假定它是一个布尔值。但是结果的数据类型是char。因此它给你数据类型不匹配错误。如果你写成

            if(result == "A")
        

        它会检查字母是否为A,并删除错误。

        【讨论】:

          猜你喜欢
          • 2021-05-07
          • 1970-01-01
          • 2018-09-07
          • 2019-07-24
          • 1970-01-01
          • 2013-01-24
          • 2012-03-10
          • 2012-12-16
          • 1970-01-01
          相关资源
          最近更新 更多