创建一个名为parseEqn的方法,该方法将接收1个String变量并返回传递给它的表达式的double值。
parseEqn("123+23") → 146.0
parseEqn("3+5") → 8.0
parseEqn("3-5") → -2.0
这就是问题^^^^而我认为我需要做的是首先使用字符串标记器将字符串拆分,然后将标记转换为双字符,然后根据运算符添加或减去...但我不确定..
这是我到目前为止所拥有的
public double parseEqn(String str) {
StringTokenizer st = new StringTokenizer(str, "+-", true);
String first= st.nextToken();
String op= st.nextToken();
String second= st.nextToken();
double num1 = Double.parseDouble(first);
double num2 = Double.parseDouble(second);
if (op.equals("+")){
return num1+num2;
}
else (op.equals("-")){
return num1-num2;
}
我不知道......
答案 0 :(得分:0)
编写表达式解析器不是一项简单的任务。解析任意中缀表达式的标准算法是shunting-yard algorithm。我们的想法是遍历每个令牌并从输入中构建反向波兰表示法(RPN)表达式。 RPN表达式本质上是一个基于堆栈的操作列表,计算机很容易使用(并且易于编写代码来评估)。