【发布时间】:2017-04-18 21:07:01
【问题描述】:
我的 Android 程序有问题。我使用 mxparser 作为我的数学解析器。我将它添加到我的库中。使用此程序键入程序后没有显示错误,但是当我在运行时单击某个按钮时程序出现错误。我多次尝试调试它,我确信错误来自解析器。有什么想法吗?
private OnClickListener ButtonClicked= new OnClickListener()
{
@Override
public void onClick(View v)
{
Function f = new Function("f(x) = "+funcText.getText().toString());
Expression xlexp = new Expression("f("+xlText.getText().toString()+")",f);
Expression xuexp = new Expression("f("+xuText.getText().toString()+")",f);
double c = xlexp.calculate();
double d = xuexp.calculate();
String xlString = String.valueOf(c);
String xuString = String.valueOf(d);
fxlText.setText(xlString);
fxuText.setText(xuString);
}
};
更新:
这是错误信息(我认为是 xD)
感谢 LutzL 一直关注我 :D
更新2:
我编辑了代码:
private OnClickListener ButtonClicked= new OnClickListener()
{
@Override
public void onClick(View v)
{
xlText.getText();
xuText.getText();
String firstString=xlText.getText().toString();
String secondString=xuText.getText().toString();
double xl = Double.parseDouble(firstString);
double xu = Double.parseDouble(secondString);
double f=2*xl+1;
double f2=2*xu+1;
String xlstring = String.valueOf(f);
String xustring = String.valueOf(f2);
fxlText.setText(xlstring);
fxuText.setText(xustring);
}
};
这是有效的。在这段代码中,我得到了 xl 和 xu 的值,然后将其插入到我创建的函数中(2*x+1)。但我需要的是一个代码,它也可以从用户那里获得功能。这就是我使用 mxparser 的原因。
更新3:
我开始调试它并this shows(未找到源)。不知道是什么意思。任何想法? :(
【问题讨论】:
-
发布您的堆栈跟踪
-
删除多余的转换。
.getText()已经是字符串,无需转换为字符串。您还可以使用fxlText.setText(c),因为编译器会自动插入对Double.toString(c)的调用以获取预期的String参数。这与允许您使用的机制相同,例如,println("c= "+c)。 -
对不起。今天刚开始学安卓。我有点不明白你说的并这样做。它仍然会出错:(@LutzL
-
您究竟使用什么作为输入字符串?错误信息是什么,请将其粘贴到您的问题中。 -- 你可以忽略我的风格提示,因为它们不会影响错误。请不要在 cmets 中发布对您问题的更新,直接编辑您的问题,如果代码没有改变错误情况,请替换您的代码,或者如果它改变了错误,请添加一个包含新代码的部分。
-
如果你能提供一个最小的完整工作代码,这对你和我们也会有帮助,比如` ... main() { String funcTextStr =" ... ", xlTextStr = “……”; ...` 并输出到控制台并报告结果输出,包括。错误信息,如果有的话。 -- 相反,从
onClick方法中删除mxmath调用,只需将字符串一起粘贴到输出文本字段中而不评估任何数学,这应该显示错误是在mxmath 还是在GUI 构造中。