字符不能转换为布尔值?

问题描述:

这是我做的第一个项目,我知道有很多错误。我试图用嵌套的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 
             } 



} 

}

+3

赋值与平等。 ('='vs.'==')并且字符文字被单引号(''A'')包围。 –

+0

更正:赋值表达式的类型是分配给变量的类型。所以表达式'aChar ='?''被键入为'char',但'if'只接受'布尔型'表达式。那么问题是“为什么不= =没有按预期的那样?”,其中有很多现有的教程/书籍/参考:) – user2864740

char不能转换到boolean

好像你想做检查。你可以这样做,

String sum = "0+3"; 

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

isPlus将现在指数自字符持有真正的sum 1“+”

+0

或者他在'if'语句中使用赋值运算符。 –

+0

@JonnyHenly是的。我在我的答案中也包括了,显示==如何生成布尔值 – 2016-03-03 05:14:33

如果块你分配到的结果。 你应该做的,如果(结果== 'A')// 'A' 不是一个

+1

不正确。它应该是'A'。 –

你检查这样的:

if (result == 'A') 

变化A'A'===

为了要匹配字符,您需要将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 "); 
     } 
    } 
} 
+0

感谢您的明确 – JOHNSMITH8338

当你写的

if(result = A) 

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

if(result == "A") 

它会检查字母是否是A,错误将被删除。