zoukankan      html  css  js  c++  java
  • 20172325『Java程序设计』课程 结对编程练习_四则运算第二周阶段总结

    20172325『Java程序设计』课程 结对编程练习_四则运算第二周阶段总结

    结对伙伴

    • 学号:20172306
    • 姓名:刘辰
    • 结对伙伴博客链接
    • 刘辰同学对编程的积极程度很高,并且在编程能力上很不错,有自己的想法并且能够把这个想法具体的实践出来,只是在编程的过程中和同学交流不够,总是在最后不行了才发现问题,很容易造成前功尽弃,希望在编程过程中多沟通,减少不必要的时间精力的浪费。

    小组结对编程照片

    项目中自己负责的部分

    我负责的是两个部分,分别是:

    • 1、利用栈将中缀表达式转后缀表达式;
    • 2、对后缀表达式进行计算。

    个人贡献度划分

    我认为我们的贡献度划分是“ 50% :50% ” ;我们有两个成员,然后任务分配也比较容易,必做部分有四个,我们一人两个部分,因为每一个部分的完成都需要投入时间和精力,所以我认为没有难易之分,五五开。

    相关过程的截图

    - 分等级的题目的生成

    - 能够实现真分数

    - 后缀表达式的计算

    关键代码解释

    • 后缀表达式的计算
        package 结对项目;
        /*
         *    后缀表达式的计算     作者:邓煜坤,刘辰
         *
         *    邓煜坤负责的部分
         */
        
        import java.util.Stack;
        import java.util.StringTokenizer;
        import java.util.Scanner;
    
    
        public class HZ {
    
           /*
        *由于我们的Test文件还没编好,各部分还没有联系起来,所以我先在这里把四个符号做出了声明
        */
    
        private final char ADD = '+';
        private final char SUBTRACT = '-';
        private final char MULTIPLY = '*';
        private final char DIVIDE = '/';
    
        private Stack<Integer> stack;
    
        /*
         * 初始化一个空栈,用来存储表达式
         */
        public HZ (){
            stack = new Stack<Integer>();
        }
    
        /*
         * 此处用来判断指定的char是否为操作符。
         *  如果是运算符,布尔值为真
         */
        private boolean isOperator(String str) {
    
            return (str.equals("+") || str.equals("-") || str.equals("*") || str
                    .equals("/"));
        }
    
        /*
         * 下面是具体的计算过程
         */
        private int calculateSingleOp(char operator, int num1, int num2) {
    
            int result = 0;
            switch (operator)
            {
                case ADD:
                    result = num1 + num2;
                    break;
                case SUBTRACT:
                    result = num1 - num2;
                    break;
                case MULTIPLY:
                    result = num1 * num2;
                    break;
                case DIVIDE:
                    result = num1 / num2;
                    break;
            }
    
            return result;
        }
    
        /*
         *下面是计算指定的后缀表达式。
         *(1).如果遇到操作数,将其推送到栈上。
         *(2).如果遇到操作符,则弹出两个操作数以供运算符计算。
         *(3).将计算结果推到栈上。
         *字符串表示后缀表达式。
         */
        public int evaluate (String str) {
    
            int num1, num2, result = 0;
            // 指定特定的字符分隔符为空格。
            String token = "";
            StringTokenizer tokenizer = new StringTokenizer(str);
    
            while (tokenizer.hasMoreTokens()) {
                // 每一个字符都来自于字符串。
                token = tokenizer.nextToken();
    
                if (isOperator(token)) {
                    num2 = (stack.pop()).intValue();
                    num1 = (stack.pop()).intValue();
                    result = calculateSingleOp(token.charAt(0), num1, num2);
                    // 将计算结果推到栈上
                    stack.push(new Integer(result));
                } else {
                    stack.push(new Integer(Integer.parseInt(token)));
                }
            }
            return result;
        }
    
    
        public static void main(String[] args) {
            String expression = "";
            String again = "";
            int result = 0;
    
            try {
                @SuppressWarnings("resource")
                Scanner input = new Scanner(System.in);
                do {
                    HZ evaluator = new HZ();
                    // 读取一个有效的后缀表达式。即用户输入有效后缀表达式,之后在Test文件里将参数构建过来就好了。
                    System.out
                            .println("Please enter a valid postfix expression : ");
                    
                    expression = input.nextLine();
    
                    result = evaluator.evaluate(expression);
                    System.out.println();
                    System.out
                            .println("After evaluating, the calculated result is : "
                                    + result);
    
                    // 重复操作
                    System.out.println("Do you want to test again? [Y/N]");
                    again = input.nextLine();
                    System.out.println();
                } while (again.equalsIgnoreCase("Y"));
            } catch (Exception IOException) {
                System.out.println("Input exception reported.");
            }
        }
      }
    
  • 相关阅读:
    Teacher Bo HDU 5762(暴力)
    The Unique MST POJ1679(次小生成树)
    Sqrt Bo hdu 5752
    Borg Maze POJ 3026(BFS+最小生成树)
    Highways POJ 1751(最小生成树)
    hdu---2050---折线分割平面
    POj---1469---Courses
    poj---2349---Arctic Network
    poj-2528-Mayor's posters
    POJ---3468---A Simple Problem with Integers
  • 原文地址:https://www.cnblogs.com/20172325DYK/p/9011070.html
Copyright © 2011-2022 走看看