Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/338.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 字符不能转换为布尔值?_Java_Char_Boolean - Fatal编程技术网

Java 字符不能转换为布尔值?

Java 字符不能转换为布尔值?,java,char,boolean,Java,Char,Boolean,这是我做的第一个项目,所以我知道有很多错误。我正在尝试使用嵌套的if-else语句创建计算器。我得到的唯一错误是,在if语句中,我不能从char转换为boolean。我不知道为什么它会认为我在尝试转换为布尔值,但我猜“=A”等可能会让它这么想?如有任何建议,将不胜感激 public static void main(String[] args) { //main class char result = 0; //define and declare variables doubl

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



}

}
字符
不能转换为
布尔值

好像你想做支票。你可以这样做

String sum = "0+3";

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

isPlus
现在将保持为真,因为在为结果赋值的if块中,
sum
索引1处的字符是“+”

。 如果(result=='A')/'A'不是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 ");
        }
    }
}

当您将条件写为

    if(result = A)
它实际上是给结果变量赋值。现在,由于A不是用引号写的,所以它假设A是一个变量,但由于它没有在程序中的任何地方声明,所以它假设A是一个布尔值。但是结果的数据类型是char。因此,它会给您带来数据类型不匹配错误。如果你把它写成

    if(result == "A")

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

赋值与相等。(
=
vs.
=
)和字符文字被单引号(
'A'
)包围。正确:赋值表达式的类型是分配给的变量的类型。因此表达式
aChar='?'
被类型化为
char
,但是
if
只接受
布尔型表达式。然后问题是“为什么=没有达到预期效果?”,对于这个问题,已有大量的教程/书籍/参考:)或者他在
if
语句中使用赋值运算符。@JonnyHenly-Yep。我的答案中也包含了这一点,显示了==是如何生成布尔值的