我正在用android构建一个简单的计算器,我已经使它可以使用简单的x运算符x形式工作,但是我试图使其与两个以上的令牌一起工作,并且使用括号。

我正在使用附加库进行解释。
编辑:解释程序类的文档:http://www.beanshell.org/javadoc/bsh/Interpreter.html

我尝试在Java独立版本中使用此代码,并且可以正常工作:

public double evaluate(String express) {
    double value = 0;
    String answer = null;

    String base = "result = ";
    Interpreter interpreter = new Interpreter();

    try {
        interpreter.eval(base + express);
        answer = interpreter.get("result").toString();//this line
        value = Double.parseDouble(answer);
    } catch (EvalError e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }


但是当我在android中使用它时,toString()方法抛出一个nullpointerexception,为什么呢?
为什么专门在android中?

最佳答案

但是当我在Android中使用它时,toString()方法抛出一个nullpointerexception


它不是。您甚至都不用那种方法。

因为interpreter.get()方法返回null。就像写:

null.toString();


就是这样。

09-12 05:36