zoukankan      html  css  js  c++  java
  • 20165323 结对编程之四则运算week2-整体总结

    一、需求

    实现一个命令行程序,要求:
    1、自动生成小学四则运算题目(加、减、乘、除)
    2、支持整数
    3、支持多运算符(比如生成包含100个运算符的题目)
    4、支持真分数
    5、能判断错误,在输入错误结果后提醒出错并输出正确答案
    6、统计正确率

    二、设计思路

    按以下要求逐步实现输出结果。

    请输入要生成的题目数:<输入6>
    
    题目1:
    3 + 4 = <输入7>
    正确!
    
    题目2:
    5 ÷ 8 = <输入5/6>
    错误,正确答案为:5/8
    
    题目3:
    2/3 - 1/5 = <输入7/15>
    正确!
    
    题目4:
    1/6 * 3/7 = <输入3/42>
    正确!
    
    题目5:
    10 - 5 * 4 = <输入20>
    错误,正确答案为:-20
    
    题目6:
    (1/3 + 1/2) * 11/20 = <输入55/120>
    错误,正确答案为:11/24
    
    完成6道题目,正确率为50%
    

    三、实现过程中的关键代码

    package Arithmetic;
    
    import java.text.NumberFormat;
    import java.util.Random;
    import java.util.Scanner;
    public class ResultTest {
        public static void main(String[] args) {
            Scanner Scan = new Scanner(System.in 
    
    );
            Scanner Scan1 = new Scanner(System.in 
    
    );
            NumberFormat fmt = NumberFormat.getPercentInstance();
            Random rnd = new Random();
            Questions Iq = new Questions();
            Calculator jdg = new Calculator();
            NifixToSuffix nts = new NifixToSuffix();
    
            int count;
    
    
            while(true) {
                int j = 0;
                System.out.print("请输入要生成的题目数:" );
                count = Scan.nextInt();
    
                for (int i = 0; i < count; i++) {
                                                                                               //生成题目
                    String expr = null;
                    int a = rnd.nextInt(4);
                    if (a == 0){
                       expr =  Iq.getAdd();
                    }
                    else if (a == 1){
                        expr = Iq.getSub();
                    }
                    else if (a == 2){
                        expr = Iq.getMulti();
                    }
                    else if (a == 3){
                        expr = Iq.getDiv();
                    }
                    System.out.print(expr + " = ");
                                                                                                  //输入结果
    
                    String result = Scan1.nextLine();
                    nts.conversion(expr);
    
                    if (result.equals(jdg.evaluate(nts.getMessage()))){
                        System.out.println("正确!");
                        j++;
                    }
                    else
                        System.out.println("错误,正确答案为:" + jdg.evaluate(nts.getMessage()));
                }
                double accuracy = j/count;
                System.out.println("完成" + count + "道题目,正确率为" + fmt.format(accuracy));                //答题结果及正确率
                System.out.println("答对"+ j + "道题");
                String s1 = Scan.nextLine();
                System.out.print("是否继续生成题目?(y/n):"  );
                String s2 = Scan.nextLine();
                if (s2.equalsIgnoreCase("n")){
                    break;
                }
    
            }
        }
    }
    

    四、运行过程截图




    测试结果



    UML图

    五、代码托管

    代码存放地址

    六、遇到的困难及解决方法

    遇到的问题:j/count其中j为int型 得改为(double)j/count 不然会成结果会为0.

    七、对结对的小伙伴做出评价

    在这周的结对编程中,我和我的队友积极查阅了相关资料,共同探索四则运算问题,相互学习,相互促进,虽然在这之前我们两对第15章堆栈内容和第十章输入输出内容不太熟悉,这一次的结对编程训练,使我两都得到了提高,这次我做驾驶员,他做领航员,在不懈的努力下使我们的JAVA小船顺利到达了终点,我相信经过这次训练我们俩的默契度会越来越高,这使我俩都受益匪浅。

    八、结对照片

    九、PSP

    PSP2.1 Personal Software Process Stages 预估耗时(小时) 实际耗时(小时)
    Planning 计划 1 1
    · Estimate · 估计这个任务需要多少时间 8 21
    Development 开发 7 14
    · Analysis · 需求分析 (包括学习新技术) 2 4
    · Design Spec · 生成设计文档 1 2
    · Design Review · 设计复审 (和同事审核设计文档) 1 2
    · Coding Standard · 代码规范 (为目前的开发制定合适的规范) 0.5 1
    · Design · 具体设计 7 14
    · Coding · 具体编码 7 14
    · Code Review · 代码复审 0.5 0.5
    · Test · 测试(自我测试,修改代码,提交修改) 1 1
    Reporting 报告 1 2
    · Test Report · 测试报告 1 1
    · Size Measurement · 计算工作量 0.5 0.5
    · Postmortem & Process Improvement Plan · 事后总结, 并提出过程改进计划 1 1
    . 合计 39.5 79
  • 相关阅读:
    【爬虫】新闻统计
    python pip 出错 "Can't connect to HTTPS URL because the SSL module is not available.
    【sql server复制】sql server复制【最佳实践】
    mybase个人数据库笔记工具下载
    sqlserver脱机时ldf文件丢失重建
    sqlserver CTE定位点类型和递归部分的类型不匹配
    mysql物理存储(页区段)
    sql server update与delete引发的死锁
    Linux学习笔记(19)linux定时任务(crontab)
    mysql工具生态
  • 原文地址:https://www.cnblogs.com/asd65360323/p/8910622.html
Copyright © 2011-2022 走看看