主函式測試**:
public static void main(string args)else
}else
}else else}}
index++;
if (index>=expression.length())
}//表示式掃瞄完畢,就順序的從數棧和符號棧中pop出相應的數和符號,並執行
while(true)
num1=numstack.pop();
num2=numstack.pop();
oper=operstack.pop();
res=numstack.cal(num1,num2,oper);
numstack.push(res);
}//將數棧的最後數pop出來,就是結果
int res2=numstack.pop();
system.out.printf("表示式%s=%d\n",expression,res2);}}
class arraystack
//增加乙個方法,可以返回當前棧頂的值,但是不是真正的pop
public int peek()
//棧滿
public boolean isfull()
//棧空
public boolean isempty()
//新增資料
public void push(int data)else
}//提取資料
public int pop()
return stack[top--];
}//遍歷棧
public void list()else
system.out.println();}}
//返回運算子優先順序,優先順序是由程式設計師來確定優先順序使用數字表示
//數字越大,則優先順序就越高
public int priority(int oper)else if(oper=='+'||oper=='-')else
}//判斷是不是乙個運算子
public boolean isoper(char val)
//計算方法
public int cal(int num1,int num2,int oper)
return res;}}
棧實現綜合計算器
package com.dai.stack public class calculator else else else else index 1 是否掃瞄到最後 index if index expression.length while true num1 numstack.pop num2 n...
棧實現綜合計算器
思路分析 實現 package stack public class calculator else else else else 讓index 1,並判斷是否掃瞄到expression最後 index if index expression.length while true num1 numst...
棧實現綜合計算器(中綴)
思路分析 對於乙個表示式,有數字,有符號,因此我們需要建立兩個棧。乙個數棧 用於存放數字 乙個符號棧 用於存放符號。1.通過乙個index值 索引 來遍歷我們的表示式。2.如果我們發現是乙個數字,就直接入數棧。3.如果發現掃瞄到是乙個符號,就分如下情況 3.1如果發現當前的符號棧為空,就直接入棧 3...