我使用以下代码将字符串方程解析为结果双精度(基于双精度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();
}
}
答案 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();
}
}