我创建了一个包含三个类的表达式树(一个用于评估表达式的树的结构,并给出它的后缀和中缀表示法(Expr),另一个只是从表达式构建树(使用 stack . ..) 另一个是 EvalExpr,它是我的主要部分),但我得到一个错误的表达式“(2 + 3.5)”,我不知道它来自哪里。像这样的错误:
Exception in thread "main" java.lang.NumberFormatException: For input string: "3.5"
at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)
at java.lang.Integer.parseInt(Integer.java:492)
at java.lang.Integer.parseInt(Integer.java:527)
at exprTree.Expr.eval(Expr.java:68)
at exprTree.Expr.eval(Expr.java:74)
at exprTree.Expr.eval(Expr.java:73)
at exprTree.Expr.eval(Expr.java:73)
at EvalExpr.main(EvalExpr.java:42)
我的方法 eval() 是这样的:
public double eval()
{
double leftOperand = 0;
double rightOperand = 0;
String operator;
if(this == null)
return 0;
else if(rightChild == null && leftChild == null)
return Double.parseDouble(value);
else
{
operator = value;
leftOperand = leftChild.eval();
rightOperand = rightChild.eval();
return calc(operator, leftOperand, rightOperand);
}
}
谁能帮我找到这个神秘的错误?谢谢