尝试/ catch不使用android表达式解析器exp4j

时间:2014-10-20 13:53:22

标签: java android try-catch

我使用以下代码将字符串方程解析为结果双精度(基于双精度x,y和z的一些输入值以及方程输入)。当我在eclipse中将它作为一个java程序运行时,该程序工作正常,但是当我在一个Android应用程序中运行它时,它会挂起(应用程序变得无法响应)。在我的应用中,我从文本框中获取字符串方程并显示结果编号。任何人都可以告诉我为什么以下代码在android中不起作用?我的猜测是它与try-catch有关,但我无法弄清楚原因。我使用的是exp4j jar。

非常感谢!

public class ParseEquation {

    public double totalValue = 0;

    public ParseEquation(String inputEquation, double x, double y,double z) 
    {   
        //String inputEquation = "-4.14*x*x - 5/2 - y^2";
        Calculable calc = null;
        try {
            calc = new ExpressionBuilder(inputEquation)
                .withVariable("x", x)
                .withVariable("y", y)
                .withVariable("z", z)
                .build();
        } catch (UnknownFunctionException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (UnparsableExpressionException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

        totalValue=calc.calculate();
    }   
}

1 个答案:

答案 0 :(得分:0)

尝试使用Log类的方法,包含3个参数。

public class ParseEquation {

    public double totalValue = 0;

    public ParseEquation(String inputEquation, double x, double y,double z) 
    {   
        //String inputEquation = "-4.14*x*x - 5/2 - y^2";
        Calculable calc = null;
        try {
            calc = new ExpressionBuilder(inputEquation)
                .withVariable("x", x)
                .withVariable("y", y)
                .withVariable("z", z)
                .build();
        } catch (UnknownFunctionException e) {
            // TODO Auto-generated catch block
            Log.e(getClass().getName(), "catch block1", e);
        } catch (UnparsableExpressionException e) {
            // TODO Auto-generated catch block
            Log.e(getClass().getName(), "catch block2", e);
        }

        totalValue=calc.calculate();
    }   
}