有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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) 个答案