zoukankan      html  css  js  c++  java
  • 结对编程——四则运算(第一周)

    结对编程——四则运算(第一周)

    需求分析

    题目要求

    一个命令行程序实现:

    • 自动生成小学四则运算题目(加、减、乘、除)
    • 支持整数
    • 支持多运算符(比如生成包含100个运算符的题目)
    • 支持真分数
    • 统计正确率

    需求理解

    1. 输入:需要计算的式子数、计算结果

      输出:判断后的答案(true/false)
    2. 满足真分数的运算如:1/3 + 1/4 = 7/12
    3. 处理的运算符为 +, −, ×, ÷
    4. 能处理用户的输入,并判断对错,统计正确率。

    设计思路

    • 自动生成四则运算,需要用到随机数,用随机数随机生成数字,以及随机生成0,1,2,3分别代表加减乘除符号以switch语句进行分类
    • 特殊情况主要有除数不能为0,假如除数为0,则再产生一个随机数,利用while循环;
    • 用count统计做对的条数,与总数相除作为正确率

    实现过程中的关键代码解释

    import java.util.Scanner;
    public class question {
        public static void main(String[] args)
        {
            int k;
            int total,answer=0;
            int answer2;
            int count=0;
            System.out.println("请输入你需要练习的题目数:");
            Scanner input=new Scanner(System.in 
    
    );
            total=input.nextInt();
            question question=new question();
            for(int n=0;n<total;n++)
            {
                int i=(int)(Math.random()*100);
                int j=(int)(Math.random()*100);
                switch((int)(Math.random()*4))
                {
                    case 0:
                        System.out.println(i+"+"+j+"=");
                        answer=i+j;
                        break;
                    case 1:
                        if(i<j)
                        {
                            int temp=i;
                            i=j;
                            j=temp;
                        }
                        System.out.println(i+"-"+j+"=");
                        answer=i-j;
                        break;
                    case 2:
                        System.out.println(i+"*"+j+"=");
                        answer=i*j;
                        break;
                    case 3:
                        while(j==0)
                            j= (int)(Math.random()*100);
                        System.out.println(i+"/"+j+"=");
                        answer=i/j;
                        break;
                }
                Scanner input2=new Scanner(System.in 
    
    );
                answer2=input2.nextInt();
                if(answer2==answer){
                    System.out.println("正确!");
                    count++;
                }
                else{
                    System.out.println("错误!");
                }
            }
            float cent=(float)count/(float)total;
            System.out.println("正确率为"+cent);
        }
    }
    

    运行过程截图

    代码托管地址

    码云地址

    遇到的困难及解决方法

    • 困难1:如何高效的将一个输入的值转化为可用数字?
    • 解决方法1:对于为0的除数,利用while循环控制,进行排0输出。
    • 困难2:选用何种方法对运算符进行随机处理?
    • 解决方法2:随机生成0,1,2,3,以数字分类代替运算符分类。

    PSP表格

    PSP2.1 Personal Software Process Stages 预估耗时(分钟) 实际耗时(分钟)
    · Test · 测试(自我测试,修改代码,提交修改) 20min 25min
    Planning 计划 15min 10min
    · Estimate · 估计这个任务需要多少时间 240min 260min
    Development 开发 40min 35min
    · Analysis · 需求分析 (包括学习新技术) 15min 35min
    · Coding Standard · 代码规范 (为目前的开发制定合适的规范) 10min 15min
    · Coding · 具体编码 2h 100min
    · Code Review · 代码复审 30min 40min
  • 相关阅读:
    oracle归档日志增长过快处理方法
    Oracle“死锁”模拟
    Oracle 手工清除回滚段的几种方法
    Oracle 一次 锁表 处理小记
    Oracle中如何判断一个字符串是否含有汉字
    机房收费系统验收总结
    hdu 4747 Mex (线段树)
    Java 5 的新标准语法和用法详解集锦
    java类加载器行为[笔记]
    poj1330Nearest Common Ancestors(LCA小结)
  • 原文地址:https://www.cnblogs.com/akashi/p/8850258.html
Copyright © 2011-2022 走看看