为什么我不能将String转换为char并直接在Switch Statement中使用?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了为什么我不能将String转换为char并直接在Switch Statement中使用?相关的知识,希望对你有一定的参考价值。
为什么我不能将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();
}
}
答案
你可以在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;
}
另一答案
您可以使用char字面值:
switch(c){
case '+':
System.out.println(d1+d2);
break;
...
类型不同,因此您无法直接比较它们。它们碰巧在这种特殊情况下是可转换的,但一般情况下并非如此,因此编译器不能允许这样做。
另一答案
尝试下面的代码,它将执行
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,就像您在代码片段中所做的那样。如果您正在寻找其他解决方案,请告诉我
另一答案
你无法将一个String解析为一个char,因为String很大而不适合。可以把它想象成一个由多个字符组成的字符串,所以它就像一个字符串一样。
以上是关于为什么我不能将String转换为char并直接在Switch Statement中使用?的主要内容,如果未能解决你的问题,请参考以下文章