gpt4 book ai didi

java - 删除了 Switch 语句以解决错误,但错误仍然存​​在。

转载 作者:行者123 更新时间:2023-12-01 08:16:15 24 4
gpt4 key购买 nike

这是我的问题。我从此方法中删除了 switch 语句,因为我必须更改它以适应多个变量,而 switch 语句仅允许 char 常量。没有java版本7就无法使用字符串作为变量。所以我所做的就是更改为通常的if/else语句来执行。但是当尝试运行该程序时,我仍然在 switch 语句上收到错误,如下所示:

有什么想法吗?如果希望我包含测试人员的代码,我可以询问。

java.lang.Error: Unresolved compilation problem: Cannot switch on a value of type String for source level below 1.7. Only convertible int values or enum variables are permitted

at Project2.PostfixEvaluator.calculate(PostfixEvaluator.java:124) at Project2.PostfixEvaluator.eval(PostfixEvaluator.java:71) at Project2.ExpressionEvaluator.evaluate(ExpressionEvaluator.java:29) at Project2.ExpressionEvaluatorTester.main(ExpressionEvaluatorTester.java:32)

public Token calculate(Token opr, Token opd1, Token opd2)
{
// Get the first String from opr, it is the operator: +, -, ...
String oper = opr.getBody();

System.out.println(opr);

//Get the two operands by converting from String to int
int op1 = Integer.parseInt(opd1.getBody());
int op2 = Integer.parseInt(opd2.getBody());

//Default return value, in case an error occurs
int res = 0;

/**
* Alterations begin here
* Performs operation and sets value for res
*/

if(oper.equals("+"))
{
res = op1+op2;
}
else if(oper.equals("-"))
{
res = op1-op2;
}
else if(oper.equals("*")){
res = op1*op2;
}
else if(oper.equals("/") && op2 != 0){
res = op1/op2;
}
else if(oper.equals("/") && op2 == 0){
System.out.println("Division by zero error in"+
" PostfixEvaluator.calculate().");
}
else if(oper.equals("%") && op2 != 0){
res = op1%op2;
}
else if(oper.equals("%") && op2 == 0){
System.out.println("Division by zero error in"+
" PostfixEvaluator.calculate().");
}
else if(oper.equals("<") && (op1 < op2)){
res = 1;
}
else if(oper.equals("<") && (op1 >= op2)){
res = 0;
}
else if(oper.equals("<=") && (op1 <= op2)){
res = 1;
}
else if(oper.equals("<=") && (op1 > op2)){
res = 0;
}
else if(oper.equals(">") && (op1 > op2)){
res = 1;
}
else if(oper.equals(">") && (op1 <= op2)){
res = 0;
}
else if(oper.equals(">=") && (op1 >= op2)){
res = 1;
}
else if(oper.equals(">=") && (op1 < op2)){
res = 0;
}
else if(oper.equals("==") && (op1 == op2)){
res = 1;
}
else if(oper.equals("==") && (op1 != op2)){
res = 0;
}
else if(oper.equals("!=") && (op1 != op2)){
res = 1;
}
else if(oper.equals("!=") && (op1 == op2)){
res = 0;
}
else if(oper.equals("||") && true){
res = 1;
}
else if(oper.equals("&&")&& true){
res = 1;
}
else
res = 0;





//Convert res into a Token and return it.
return new Token(""+res);

}

最佳答案

由于这不是编译器错误,而是运行时错误,因此意味着您更改了源代码,但无法重新编译它,或者至少无法运行重新编译的代码。

该错误肯定与源代码中的 switch 语句有关,但您已将其从源代码文件中删除。因此,您必须加载 .class 文件的过时版本。检查自动构建选项是否已激活和/或执行完整的项目清理+重建。

关于java - 删除了 Switch 语句以解决错误,但错误仍然存​​在。,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13222401/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com