计算器
希望:用户直接输入一个中缀表达式(字符串)给计算机
然后计算机计算出结果。
思路
创建两个栈一个存储数s1,另一个存储运算符号s2,对用户传入的字符串用index进行一个一个遍历。
- 如果遍历的数,直接入数栈s1。
- 因为对字符串遍历是一个一个进行的,当遍历多位数时不能直接入栈,要检验后一位是否为数字,直到后一位是符号才结束遍历
- 如果遍历的是符号,若符号栈s2,为空直接入栈
1.若是左括号“(”直接入栈
2. 若是遇到右括号“)” ,则从数栈中弹出两个数,符号栈中弹出一个符号进行运算,运算的结果压入数栈,直到遇到左括号“(”,才停止操作,最后弹出“(” –对括号进行消除
3. 若入栈的符号与栈顶的符号进行,入栈符号运算优先级大于栈顶,直接入栈
4. 若入栈符号优先级小于或等于栈顶,则数栈弹出两个数,符号栈弹出一个符号进行运算,运算的结果入数栈,最后再把符号入符号栈测试程序
public class Test{
public static void main(String[] args){
//new一个计算器
compute c=new comput();
//要输入 中缀表达式
String s="1+2+33";
//调用方法结束出结果
int i=s.outcome(s);
}
}
comput 计算器类
public class comput{
//无参数构造方法
public comput(){
}
//计算的方法outcome,参数传入中缀表达式,字符串
public int outcome(String s){
//创建两个栈,一个是数栈s1,一个是符号栈s2.
Stack s1=new Stack();
Stack s2=new Stack();
//创建一个用来遍历字符串index
int index=0;
//对字符串进行一个一个遍历
while(index<s.length()-