mini dc(选做)
发布时间:2020-12-14 01:14:44 所属栏目:Linux 来源:网络整理
导读:一、题目要求 提交测试截图和码云练习项目链接,实现Linux下dc的功能,计算后缀表达式的值 二、源代码 1.MyDC类 import java.util.StringTokenizer;import java.util.Stack;public class MyDC{ /** constant for addition symbol */ private final char ADD
一、题目要求提交测试截图和码云练习项目链接,实现Linux下dc的功能,计算后缀表达式的值 二、源代码1.MyDC类import java.util.StringTokenizer; import java.util.Stack; public class MyDC { /** constant for addition symbol */ private final char ADD = '+'; /** constant for subtraction symbol */ private final char SUBTRACT = '-'; /** constant for multiplication symbol */ private final char MULTIPLY = '*'; /** constant for division symbol */ private final char DIVIDE = '/'; /** the stack */ private Stack<Integer> stack; public MyDC() { stack = new Stack<Integer>(); } public int evaluate (String expr) { int op1,op2,result = 0; String token; StringTokenizer tokenizer = new StringTokenizer (expr); while (tokenizer.hasMoreTokens()) { token = tokenizer.nextToken(); //如果是运算符,调用isOperator if (isOperator(token)==true) { op2=stack.pop();//从栈中弹出操作数2 op1=stack.pop();//从栈中弹出操作数1 result=evalSingleOp(token.charAt(0),op1,op2);//根据运算符和两个操作数调用evalSingleOp计算result; stack.push(result);//计算result入栈; } else//如果是操作数 { stack.push(Integer.parseInt(token));//操作数入栈; } } return result; } private boolean isOperator (String token) { return ( token.equals("+") || token.equals("-") || token.equals("*") || token.equals("/") ); } private int evalSingleOp (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; } } 2.MyDCTest类import java.util.Scanner; public class MyDCTest { public static void main (String[] args) { String expression,again; int result; try { Scanner in = new Scanner(System.in); do { MyDC evaluator = new MyDC(); System.out.println ("Enter a valid postfix expression: "); expression = in.nextLine(); result = evaluator.evaluate (expression); System.out.println(); System.out.println ("That expression equals " + result); System.out.print ("Evaluate another expression [Y/N]? "); again = in.nextLine(); System.out.println(); } while (again.equalsIgnoreCase("y")); } catch (Exception IOException) { System.out.println("Input exception reported"); } } } 三、运行截图码云链接(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |