我计划从基础开发一个方程求解器,并能够使用以下代码进行基本的数学运算。我使用了一个令牌堆栈结构,用于存储分隔符和数字令牌。虽然这个实现太基础了,但我想在以后的版本中改进它。我只需要一些帮助我使用数据结构将令牌存储为一组堆栈的方式。请提出任何错误?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条经验 获得超4个赞
你的问题是“算术评估”。
许多书“算法”中都提到了它。
解决它的最佳和简单方法:使用堆栈和“后缀表示法”。
你可以找到很多你最喜欢的编程语言的文章。
添加回答
举报
0/150
提交
取消