java计算器没有正确执行Bodma
我有一个作业,我需要写一个遵循博德马斯定律的计算器。我已经为计算器编写了代码,但它没有正确地通过BODMAS规则。这是我的代码: 公共类计算器{
import java.util.ArrayList;
import java.util.regex.Pattern;
public class Calculator {
String expression;
public Calculator(String expr) {
this.expression = expr.replaceAll("\\s+", "");
}
public double evalExpr() {
return eval(expression);
}
private double eval(String input) {
if (input.contains("-")) {
String[] operands = input.split("\\-", 2);
return eval(operands[0]) - eval(operands[1]);
} else if (input.contains("+")) {
String[] operands = input.split("\\+", 2);
return eval(operands[0]) + eval(operands[1]);
} else if (input.contains("*")) {
String[] operands = input.split("\\*", 2);
return eval(operands[0]) * eval(operands[1]);
} else if (input.contains("/")){
String[] operands = input.split("\\/", 2);
return eval(operands[0]) / eval(operands[1]);
} else if (input.matches("[0-9]*")) {
return Integer.parseInt(input);
} else {
throw new RuntimeException();
}
}
}
public class Main {
public static void main(String[] args) {
String input = "6*8/7+6-9+5/4*3-8+6";
Calculator calc = new Calculator(input);
double answer = calc.evalExpr();
System.out.println(answer);
}
}
但由于某些原因,这个版本没有经过BODMAS。计算器应返回~5.61的答案,但返回14.10。我想不出为什么Java会自动为您提供BODMAS。有人知道这里出了什么问题吗
谢谢
共 (0) 个答案