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;
            }

        }
    }
}

四、运行过程截图

1296581-20180422222942204-604123941.png
1296581-20180422222955258-750186366.png
1296581-20180422223009364-219641823.png
测试结果
1296510-20180426133127012-1570644751.png
1296510-20180426133144836-1024271169.png
1296510-20180426133248614-979545610.png
UML图
1296510-20180426133310125-1317741376.png

五、代码托管

代码存放地址

1296581-20180422230315410-228785773.png

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

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

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

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

八、结对照片

1296581-20180422224147019-1363825409.jpg

九、PSP

PSP2.1Personal Software Process Stages预估耗时(小时)实际耗时(小时)
Planning计划11
· Estimate· 估计这个任务需要多少时间821
Development开发714
· Analysis ·需求分析 (包括学习新技术)24
· Design Spec ·生成设计文档12
· Design Review· 设计复审 (和同事审核设计文档)12
· Coding Standard ·代码规范 (为目前的开发制定合适的规范)0.51
· Design ·具体设计714
· Coding ·具体编码714
· Code Review ·代码复审0.50.5
· Test· 测试(自我测试,修改代码,提交修改)11
Reporting报告12
· Test Report· 测试报告11
· Size Measurement· 计算工作量0.50.5
· Postmortem & Process Improvement Plan· 事后总结, 并提出过程改进计划11
.合计39.579

转载于:https://www.cnblogs.com/asd65360323/p/8910622.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值