Ai
2 Star 0 Fork 0

CS-IMIS-23/20172309_javaProgramming

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
克隆/下载
PostfixEvaluator.java 2.47 KB
一键复制 编辑 原始数据 按行查看 历史
20172309 提交于 2018-09-18 22:53 +08:00 . pp4.2作业
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 ;
}
}
Loading...
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
Java
1
https://gitee.com/CS-IMIS-23/20172309_javaProgramming.git
git@gitee.com:CS-IMIS-23/20172309_javaProgramming.git
CS-IMIS-23
20172309_javaProgramming
20172309_javaProgramming
master

搜索帮助