为什么我不能将String转换为char并直接在Switch Statement中使用?

问题描述 投票:-1回答:4

为什么我不能将String转换为char并在Switch语句中使用&如果我将其保留为字符串,则switch语句不会接受它要么告诉我它需要是int还是字节或短!

public class Main {

    public static void main(String[] args) {
        String var1=getInput("enter first variable");
        String var2=getInput("enter second variable");
        String var3=getInput("enter opertaor");
        char c = var3.charAt(0);

        double d1=Double.parseDouble(var1);
        double d2=Double.parseDouble(var2);

        switch(c){
            case "+"://squiggly line appears & the bubble help says incompatible types
                System.out.println(d1+d2);
                break;
            case "-"://squiggly line appears & the bubble help says incompatible 
                System.out.println(d1-d2);
                break;
            case "*"://squiggly line appears & the bubble help says incompatible 
                System.out.println(d1*d2);
                break;
            case "/"://squiggly line appears & the bubble help says incompatible 
                System.out.println(d1/d2);
                break;
            default:
            System.out.println("Unrecognized operation");
            break;
        }
    }

    static String getInput(String prompt){
        System.out.println("prompt");
        Scanner sc=new Scanner(System.in);
        return sc.nextLine();
    }
}
java string char switch-statement
4个回答
1
投票

你可以在String表达式中使用case,不需要char。改变c就像

String c = var3.substring(0, 1);

你的代码会起作用。或者,修改您的case语句以使用char。喜欢,

switch (c) {
case '+':
    System.out.println(d1 + d2);
    break;
case '-':
    System.out.println(d1 - d2);
    break;
case '*':
    System.out.println(d1 * d2);
    break;
case '/':
    System.out.println(d1 / d2);
    break;
default:
    System.out.println("Unrecognized operation");
    break;
}

0
投票

您可以使用char字面值:

  switch(c){
      case '+':
          System.out.println(d1+d2);
          break;
...

类型不同,因此您无法直接比较它们。它们碰巧在这种特殊情况下是可转换的,但一般情况下并非如此,因此编译器不能允许这样做。


0
投票

尝试下面的代码,它将执行

public static void main(String[] args) {
    String var1 = getInput("enter first variable");
    String var2 = getInput("enter second variable");
    String var3 = getInput("enter opertaor");
    char c = var3.charAt(0);

    double d1 = Double.parseDouble(var1);
    double d2 = Double.parseDouble(var2);

    switch (c) {
        case '+':
            System.out.println(d1 + d2);
            break;
        case '-':
            System.out.println(d1 - d2);
            break;
        case '*': 
            System.out.println(d1 * d2);
            break;
        case '/': 
            System.out.println(d1 / d2);
            break;
        default:
            System.out.println("Unrecognized operation");
            break;
    }

}

static String getInput(String prompt) {
    System.out.println("prompt");
    Scanner sc = new Scanner(System.in);
    return sc.nextLine();

}

更改case '+':而不是比较String case "+":另外检查您的Java版本,从JDK v1.7开始,您将允许您在switch语句中使用Strings,就像您在代码片段中所做的那样。如果您正在寻找其他解决方案,请告诉我


-1
投票

你无法将一个String解析为一个char,因为String很大而不适合。可以把它想象成一个由多个字符组成的字符串,所以它就像一个字符串一样。

© www.soinside.com 2019 - 2024. All rights reserved.