我正在尝试使用子程序来理解以下指令:
我 = 1
而我<= n
如果 v_i 是操作数:将 v_i 推送到 tmp2。
如果 v_i 是一个运算符:将 v_i 应用于 tmp2 的前两个元素。将这些替换为 tmp2 中的结果。
i = i + 1 tmp2 的输出结果。
所以基本上我正在尝试以后缀(RPN)形式计算一些表达式。在这里,我希望每当数字是要转移到 tmp2 的操作数(数字),并且当有运算符时,它会被 tmp2 中的值替换。例如 3 5 1 +8 / 14* = 14
其他问题:无论我写什么,我都会收到“线程“主”java.lang.StringIndexOutO ....中的异常”错误。v_i 是数字或运算符或括号。
提前致谢!
我的代码:
static int eval(String postfix){
int result = 0;
String temp2 ="";
for (int i=0 ; i<postfix.length(); i++) {
if (postfix.charAt(i) !=')' && postfix.charAt(i)!= '(' && postfix.charAt(i)!= p(infix.charAt(i)))
temp2 += postfix.charAt(i);
int num1,num2;
char operator;
do {
i++;
} while ( Character.isDigit(postfix.charAt(i)));
num1 = Integer.parseInt(postfix.substring(0,i));
operator = postfix.charAt(i++);
num2 = //Double.parseDouble(expression.substring(i));
Integer.parseInt(postfix.substring(i+1));
result = num1 + num2;
result = num1 - num2;
result = num1 * num2;
result = num1 / num2;
switch (operator) {
case '+' : result = num1 + num2; break;
case '-' : result = num1 - num2; break;
case '*' : result = num1 * num2; break;
case '/' : result = num1 / num2; break;
}
}
return result;
}