java中的後綴表達式_求Java堆栈,将中缀算术表达式转换成后缀表达式。
該樓層疑似違規已被系統折疊?隱藏此樓查看此樓
package?lab2.lang;
import?java.util.ArrayList;
import?java.util.HashMap;
import?java.util.List;
import?java.util.Stack;
import?java.util.regex.Matcher;
import?java.util.regex.Pattern;
/**
*?The?ExpressionFactory?class?represents?the?factory?that
*?generates?expressions.
*
*?@author?group7
*
*/
public?class?ExpressionFactory?{
private?HashMap?ops?=?new?HashMap();
private?Pattern?opPattern?=?null;
/**
*?Set?an?operator?in?the?rule.
*
*?@param?op?The?operator.?It?cannot?be?null?or?empty.
*?@param?level?The?priority?of?the?operator.?Bigger?number?represents
*?higher?priority.
*/
public?void?setOp(String?op,?int?level)?{
if?(op?==?null)?{
throw?new?NullPointerException();
}
op?=?op.trim();
if?(op.length()?==?0)?{
throw?new?IllegalArgumentException();
}
ops.put(op,?level);
}
/**
*?Initialize?the?instance.?Must?be?called?before?using?the?instance.
*/
public?void?init()?{
StringBuffer?sb?=?new?StringBuffer();
for?(String?s?:?ops.keySet())?{
sb.append(Pattern.quote(s));
sb.append("|");
}
sb.append("\\(|\\)");
opPattern?=?Pattern.compile(sb.toString());
}
/**
*?Build?an?expression?from?the?string.
*
*?@param?expression?The?expression?string.
*?@return?The?expression.
*?@throws?IllegalArgumentException?If?this?expression?string?is?invalid.
*/
public?Expression?build(String?expression)?{
if?(expression?==?null)?{
throw?new?NullPointerException();
}
expression?=?expression.trim();
if?(expression.length()?==?0)?{
throw?new?IllegalArgumentException("empty?expression");
}
Stack?opStack?=?new?Stack();
List?outputStr?=?new?ArrayList();
List?outputOp?=?new?ArrayList();
int?start?=?0;
Matcher?m?=?opPattern.matcher(expression);
總結
以上是生活随笔為你收集整理的java中的後綴表達式_求Java堆栈,将中缀算术表达式转换成后缀表达式。的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java怎么进行浮点数运算_怎样在Jav
- 下一篇: java 远程查看电脑磁盘,请问你如何在