计算后缀表达式(自我学习总结)
主要思路:后缀表达式在计算机的运行下是十分简单的
只要正常的进行符号读取即可
1.写一个方法
2.在方法中定义域
一个boolean型判断是否是数字
创立一个栈s
一个token变量用来储存输入的数
还有几个必要的变量和结果
Scanner方法获取输入
用token获取输入的值
然后进行判,我们可以知道最终是“=”结束的,所以我们用等号来判断。挤到最后,看栈的初始元素是否为等号。
用try catch语句防止输入的值不是数字而使程序崩溃。如果isNumber是true,先将其放在结果中。else接着就是各种符号了。用switch语句来实现比较好。(其中应该注意的是幂次方^)
最后return出返回值即可`import java.util.Scanner;
import java.util.Stack;
public class 实验5 {
public static void main(String[] args) {
// TODO Auto-generated method stub
}
static double evalPostfix() {
Stacks = new Stack();
String token;
boolean isNumber;
double a,b,result = 0;
Scanner sc = new Scanner(System.in);
token = sc.next();
while(token.charAt(0)!='=') {
try {
isNumber = true;
result = Double.parseDouble(token);
}
catch(Exception e) {
isNumber = false;
}
if(isNumber = true) {
s.push(result);
}
else {
switch(token.charAt(0)) {
case'+':
a = s.pop();
b = s.pop();
s.push(a+b);
break;
case'-':
a = s.pop();
b = s.pop();
s.push(a-b);
break;
case'*':
a = s.pop();
b = s.pop();
s.push(a*b);
break;
case'/':
a = s.pop();
b = s.pop();
s.push(a/b);
break;
case'^':
a = s.pop();
b = s.pop();
s.push(Math.pow(a, b));
break;
}
}token = sc.next();
}return s.peek();
}
}`



