为什么我不能将String转换为char&用于Switch Statement&如果我把它作为字符串保留,那么switch语句就不会接受它,要么告诉我它需要是int还是byte或short !!
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();
}
}
答案 0 :(得分:1)
您可以在String
表达式中使用case
,无需char
。更改c
,如
String c = var3.substring(0, 1);
您的代码可以使用。或者,修改您的案例陈述以使用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;
}
答案 1 :(得分:0)
您可以使用字面文字:
switch(c){
case '+':
System.out.println(d1+d2);
break;
...
类型不同,因此您无法直接比较它们。它们碰巧在这种特殊情况下是可转换的,但一般情况下并非如此,因此编译器不能允许这样做。
答案 2 :(得分: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 '+':
而不是比较字符串case "+":
另外检查您的Java版本,从JDK v1.7开始,您可以在switch语句中使用字符串,就像在代码片段中一样。如果您正在寻找其他解决方案,请告诉我们
答案 3 :(得分:-1)
你无法将一个String解析为一个char,因为String很大而不适合。 可以把它想象成一个由多个字符组成的字符串,所以它就像一个字符串一样。