我計劃從基礎(chǔ)開發(fā)一個方程求解器,并能夠使用以下代碼進行基本的數(shù)學運算。我使用了一個令牌堆棧結(jié)構(gòu),用于存儲分隔符和數(shù)字令牌。雖然這個實現(xiàn)太基礎(chǔ)了,但我想在以后的版本中改進它。我只需要一些幫助我使用數(shù)據(jù)結(jié)構(gòu)將令牌存儲為一組堆棧的方式。請?zhí)岢鋈魏五e誤?import java.util.ArrayList;import java.util.Stack;class TokenStack<N, D> { private Stack<N> numberStack; private Stack<D> delimStack; public TokenStack() { numberStack = new Stack<N>(); delimStack = new Stack<D>(); } public void pushN(N num) { numberStack.push(num); } public N popN() { return numberStack.pop(); } public void pushD(D delim) { delimStack.push(delim); } public D popD() { return delimStack.pop(); } public boolean isEmptyN() { return numberStack.isEmpty(); } public boolean isEmptyD() { return delimStack.isEmpty(); }}public class GeneralST { private static final char SPACE_DELIM = ' '; private static final char ADD_DELIM = '+'; private static final char SUB_DELIM = '-'; private static final char MUL_DELIM = '*'; private static final char DIV_DELIM = '/'; protected static final char EQU_DELIM = '='; private TokenStack<String, Character> tokens = new TokenStack<String, Character>(); protected ArrayList<Character> acceptedDelims = new ArrayList<Character>(); protected ArrayList<Character> mathsDelims = new ArrayList<Character>(); protected double result; public double getResult() { return result; } protected void setupDelims() { acceptedDelims.add(SPACE_DELIM); mathsDelims.add(ADD_DELIM); mathsDelims.add(SUB_DELIM); mathsDelims.add(MUL_DELIM); mathsDelims.add(DIV_DELIM); acceptedDelims.addAll(mathsDelims); }
1 回答

慕的地8271018
TA貢獻1796條經(jīng)驗 獲得超4個贊
你的問題是“算術(shù)評估”。
許多書“算法”中都提到了它。
解決它的最佳和簡單方法:使用堆棧和“后綴表示法”。
你可以找到很多你最喜歡的編程語言的文章。
添加回答
舉報
0/150
提交
取消