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.");
        }
    }
  }

原文地址:https://www.cnblogs.com/20172325DYK/p/9043656.html

时间: 2024-11-08 11:18:05

20172325『Java程序设计』课程 结对编程练习_四则运算第三周阶段总结的相关文章

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

20172312『Java程序设计』课程 结对编程练习_四则运算第三周阶段总结 结对伙伴 学号 :20172315 20172318 姓名 :胡智韬 陆大岳 伙伴第一周博客地址: 对结对伙伴的评价:这俩人一开始各编各的还好,到后面就开始吵,从头吵到尾,陆大胖,胡志汪,还好到最后是把代码敲出来了,不容易不容易. 小组结对编程的照片(QQ群截图) 项目中自己负责的部分 代码的综合整理,错误查找,合并以及博客的撰写. 个人贡献度划分 彭霖:胡智韬:陆大岳=3:3:4 相关过程的截图 生成题目类驱动类的

2017-2018-2 1723 『Java程序设计』课程 结对编程练习_四则运算第三周总结

相关测试过程截图 测试了由中缀表达式转后缀表达式的Junit测试,分别进行了整数的和分数的,测试成功截图 由于生成问题和计算问题中,问题都是随机产生的,暂时不会进行Junit测试,故没有进行,但应是正确的,我们使用了驱动类去进行测试,结果也产生的符合格式. 小组各个成员信息 20172302侯泽洋 20172308周亚杰 测试过程中遇到的困难及解决方法 测试过程中一开始我进行的测试是始终是失败: 后来才发现一个assertEquals其实是只能对应一个实例化的类的对象,一旦是指向两个就会抛出异常

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

20172311『Java程序设计』课程 结对编程练习_四则运算第一周阶段总结 结对伙伴 学号 :20172307 姓名 :黄宇瑭 伙伴第一周博客地址: 需求分析 功能要求 1.自动生成题目 可独立使用(能实现自己编写测试类单独生成题目的功能) 可生成不同等级题目,类似于: 1级题目:2 + 5 =: 10 - 5 = 之类的两个数,一个运算符的题目 2.题目运算(判题) 可独立使用 实现中缀表达式转为后缀表达式并计算 判断用户答题正误,并输出正确结果 3.支持真分数 可独立使用 实现分数算式的

2017-2018-2 1723 『Java程序设计』课程 结对编程练习_四则运算

2017-2018-2 1723 『Java程序设计』课程 结对编程练习_四则运算 组内成员 20172327 马瑞蕃 20172320 李闻洲 20172317 蒋子行 需求分析 自动生成题目 可独立使用(能实现自己编写测试类单独生成题目的功能) 可生成不同等级题目 不同等级的题目应该指的是不同难度的题目,意味着题目的复杂程度随着等级的上升而上升 题目运算(判题) 可独立使用 实现中缀表达式转为后缀表达式并计算 自动生成的题目要先转为后缀表达式,并计算这个后缀表达式 判断用户答题正误,并输出正

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

20172312『Java程序设计』课程 结对编程练习_四则运算第二周阶段总结 结对伙伴 学号 :20172315 20172318 姓名 :胡智韬 陆大岳 伙伴第一周博客地址: 对结对伙伴的评价:这俩人一开始各编各的还好,到后面就开始吵,从头吵到尾,陆大胖,胡志汪,还好到最后是把代码敲出来了,不容易不容易. 小组结对编程的照片(QQ群截图) 项目中自己负责的部分 代码的综合整理,错误查找,合并以及博客的撰写. 个人贡献度划分 彭霖:胡智韬:陆大岳=3:3:4 相关过程的截图 生成题目类驱动类的

2017-2018-2 20172310『Java程序设计』课程 结对编程练习_四则运算_第二周

2017-2018-2 20172310『Java程序设计』课程 结对编程练习_四则运算_第二周 博客要求 组内同学需各自发表博客 博客中需包含以下内容: 相关过程截图 关键代码解释 遇到的困难及解决方法 写出项目中自己负责的部分 个人贡献度划分(按百分比给小组各成员划分贡献度,各成员贡献之和为100%) 对结对的小伙伴做出评价给出小伙伴博客链接(重点指出需要改进的地方) 给出项目的码云链接 给出小组结对编程照片 博客内容中如需展示团队的共同成果,请进行说明 如有参考或引用的设计.实现,请进行说

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

相关过程截图 中缀转后缀及后缀计算测试截图 题目生成截图 计算正确率截图 关键代码解释 将中缀表达式转换为后缀表达式并对后缀表达式进行计算 import java.util.Stack; import java.util.regex.Pattern; public class StringToArithmetic { public StringToArithmetic() { } // 将中缀表达式字符串计算得到结果 public static double stringToArithmetic

2017-2018-2 20172302 『Java程序设计』课程 结对编程练习_四则运算

1.结对对象 20172308周亚杰 2.本周内容 需求分析 (1).自动生成题目 可独立使用(能实现自己编写测试类单独生成题目的功能) 可生成不同等级题目,类似于: 1级题目:2 + 5 = .10 - 5 = 之类的两个数,一个运算符的题目 (2).题目运算(判题) 可独立使用,实现中缀表达式转为后缀表达式并计算;判断用户答题正误,并输出正确结果 (3).支持真分数 可独立使用,实现分数算式的计算 (4).题目去重(扩展需求,加分项) 可独立使用,实现对自动生成表达式的去重:如下若生成:2

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

结对伙伴 学号:20172317 20172327 姓名:蒋子行 马瑞蕃 伙伴第一周博客地址: 担任角色:驾驶员:蒋子行 副驾驶员:李闻洲 马瑞蕃 需求分析 自动生成四则运算题目 支持整数,真分数 支持多运算符和括号的使用 能判断正误并统计正确率 题目不能重复 设计思路 UML类图 生成3个不同难度的题目的类 创建一个生成真分数的类 实现中缀表达式转为后缀表达式 计算自动生成的题目用后缀表达式运算 创建测试类 部分代码截图 生成题目的类 难度一 难度二 难度三 生成分数的类 PSP时间统计: P