代码拉取完成,页面将自动刷新
package second_term.second_week;
import java.util.Scanner;
import java.util.Stack;
public class PostfixEvaluator {
private final static char ADD = '+';
private final static char SUBTRACT='-';
private final static char MULTIPLY='*';
private final static char DIVIDE='/';
private Stack<Integer> stack ;
/**
*Sets up this evalutor by creating a new stack.
*/
public PostfixEvaluator(){
stack=new Stack<Integer>() ;
}
/**
* Evaluates the specified ppostfix expression .If an operant is
* encountered,it is pushed onto the stack.If an operator isn't
* encountered,two operands are popped ,the operation is
* evalyated , and the result is pushed onto the stack.
* @param expr string representation of a postfix expression
* @return value of the given expression
*/
public int evaluate(String expr){
int op1,op2,result = 0;
String token;
Scanner parser = new Scanner(expr);
while (parser.hasNext() ) {
token = parser.next();
if (isOperator(token)) {
op2 = (stack.pop()).intValue();
op1 = (stack.pop()).intValue();
result = evaluateSingleOperator(token.charAt(0), op1, op2);
stack.push(new Integer(result));
} else
stack.push(new Integer(Integer.parseInt(token)));
}
return result;
}
/**
* Determins if the specified token is an operator.
* @param token the token to be evaluated
* @return true if token is operator
*/
private boolean isOperator(String token){
return (token .equals("+") || token .equals("-") || token .equals("*") || token .equals("/") );
}
/**
* Performs integer evaluation on a single expression consisting of
* the specified operator and operands.
* @param operation operation to be performed
* @param op1 the first operand
* @param op2 the second operand
* @return value of the expression
*/
private int evaluateSingleOperator (char operation ,int op1,int op2){
int result=0;
switch (operation){
case ADD:
result =op1+op2;
break;
case SUBTRACT :
result =op1-op2;
break;
case MULTIPLY :
result =op1*op2;
break;
case DIVIDE :
result =op1/op2;
}
return result ;
}
}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。