我正在创建这个迷你程序,为用户提供基本的数学问题,用户必须回答问题。我这样做是通过创建一个基本数学问题的数组,包含大约20个,用户输入答案的方式是通过扫描仪。
我的问题是我已经搜索并找到了将只有1个运算符和2个操作数的字符串转换为int的方法,但我一直在尝试修改它,以便程序可以转换具有多个部分的字符串进入一个int,但我不能。这就是我所拥有的
数组中的问题:
private String arithProb[] = {
"40 + 20",
"60 - 30 + 60",
"2 * 7 + 40 - 20 + 20 -40"
};
这些只是20中的3个。第一个输出正确答案,即60,但其他输出结果来自前2个操作数和第一个操作符。 第二个问题只输出30.第三个问题只输出14.
这是我用来将字符串转换为int的代码。 我做错了什么或者我没做什么不能让完整的东西工作?
public static void solveBasicArithmetic(String prob, int ans){
int cAns = evaluateQuestion(prob);
System.out.println();
if(ans == cAns){
System.out.println("CORRECT!");
}else if(ans != cAns){
System.out.println("Oops, the correct answer is: " + cAns);
}
System.out.println();
}
public static int evaluateQuestion(String problem){
Scanner sc = new Scanner(problem);
int finalAns;
do{
//Get the next number from the Scanner
int firstValue = Integer.parseInt(sc.findInLine("[0-9]*"));
//Get everything which follows and is not a number (might contain white
spaces)
String operator = sc.findInLine("[^0-9]*").trim();
int secondValue = Integer.parseInt(sc.findInLine("[0-9]*"));
switch(operator){
case "+":
finalAns =+ firstValue + secondValue;
return finalAns;
case "-":
finalAns =+ firstValue - secondValue;
return finalAns;
case "/":
finalAns =+ firstValue / secondValue;
return finalAns;
case "*":
finalAns =+ firstValue * secondValue;
return finalAns;
case "%":
finalAns =+ firstValue % secondValue;
return finalAns;
default: throw new RuntimeException("Unknown operator: " + operator);
}
}while(sc.findInLine("[0-9]*") != null);
}