900字范文,内容丰富有趣,生活中的好帮手!
900字范文 > java 中缀算术表达式转换成后缀表达式_求Java堆栈 将中缀算术表达式转换成后缀表达式。...

java 中缀算术表达式转换成后缀表达式_求Java堆栈 将中缀算术表达式转换成后缀表达式。...

时间:2024-01-19 10:18:54

相关推荐

java 中缀算术表达式转换成后缀表达式_求Java堆栈 将中缀算术表达式转换成后缀表达式。...

该楼层疑似违规已被系统折叠隐藏此楼查看此楼

packagelab2.lang;

importjava.util.ArrayList;

importjava.util.HashMap;

importjava.util.List;

importjava.util.Stack;

importjava.util.regex.Matcher;

importjava.util.regex.Pattern;

/**

*TheExpressionFactoryclassrepresentsthefactorythat

*generatesexpressions.

*

*@authorgroup7

*

*/

publicclassExpressionFactory{

privateHashMapops=newHashMap();

privatePatternopPattern=null;

/**

*Setanoperatorintherule.

*

*@paramopTheoperator.Itcannotbenullorempty.

*@paramlevelThepriorityoftheoperator.Biggernumberrepresents

*higherpriority.

*/

publicvoidsetOp(Stringop,intlevel){

if(op==null){

thrownewNullPointerException();

}

op=op.trim();

if(op.length()==0){

thrownewIllegalArgumentException();

}

ops.put(op,level);

}

/**

*Initializetheinstance.Mustbecalledbeforeusingtheinstance.

*/

publicvoidinit(){

StringBuffersb=newStringBuffer();

for(Strings:ops.keySet()){

sb.append(Pattern.quote(s));

sb.append("|");

}

sb.append("\\(|\\)");

opPattern=pile(sb.toString());

}

/**

*Buildanexpressionfromthestring.

*

*@paramexpressionTheexpressionstring.

*@returnTheexpression.

*@throwsIllegalArgumentExceptionIfthisexpressionstringisinvalid.

*/

publicExpressionbuild(Stringexpression){

if(expression==null){

thrownewNullPointerException();

}

expression=expression.trim();

if(expression.length()==0){

thrownewIllegalArgumentException("emptyexpression");

}

StackopStack=newStack();

ListoutputStr=newArrayList();

ListoutputOp=newArrayList();

intstart=0;

Matcherm=opPattern.matcher(expression);

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。