使用Java代码实现使用栈来完成简单的加减乘除表达式的计算。
实现思想:
1.使用数组来模拟栈
2.创建俩个栈,一个数栈:用来存放数据,一个符号栈:用来存放运算符。
3.在数组模拟实现栈的方法的基础上增加新的方法,用于计算运算符优先级的方法,用于返回栈顶的值的方法,用于判断是否是运算符的方法,用于计算结果的方法。
4.给定一个字符串,对字符串的每个字符进行判断
5.先判断是数字还是运算符,然后压入对应的栈中
6.如果是运算符,在压入栈中的时候需要与栈中运算符(如果栈中有运算符的话)进行优先级比较
7.如果优先级大于栈中运算符的优先级,则将该运算符压入栈中,反之,使用计算方法,将数栈中的俩个元素出栈,符号栈的一个元素出栈,按照对应的方式进行计算,然后再将计算结果压入数栈中,再次对运算符与符号栈中的运算符进行比较,直到优先级大于符号栈中运算符的优先级或者符号栈为空时,将该运算符压入栈中
8.当表达式中所有字符扫描完毕后,数栈中剩余俩个元素,符号栈中剩余一个运算符,最后进行一次运算得出结果
Java代码实现:
public class Calculator {
public static void main(String[] args) {
// TODO Auto-generated method stub
//用栈完成表达式的运算
//处理一位俩位数的+、-、*、/运算!!!!!
String expression = "51-3*5-1-10";
//创建俩个栈,数栈、符号栈
ArraySt