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

本文介绍了一个用于小学生四则运算训练的程序设计案例。该程序能够自动生成包含加、减、乘、除的算术题,并支持整数运算和真分数结果。程序还实现了用户答案的校验和正确率统计功能。

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

需求分析

题目要求

一个命令行程序实现:

  • 自动生成小学四则运算题目(加、减、乘、除)
  • 支持整数
  • 支持多运算符(比如生成包含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);
    }
}

运行过程截图

1043647-20180415234005595-1206773217.png

代码托管地址

码云地址

遇到的困难及解决方法

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

PSP表格

PSP2.1Personal Software Process Stages预估耗时(分钟)实际耗时(分钟)
· Test· 测试(自我测试,修改代码,提交修改)20min25min
Planning计划15min10min
· Estimate· 估计这个任务需要多少时间240min260min
Development开发40min35min
· Analysis· 需求分析 (包括学习新技术)15min35min
· Coding Standard· 代码规范 (为目前的开发制定合适的规范)10min15min
· Coding· 具体编码2h100min
· Code Review· 代码复审30min40min

转载于:https://www.cnblogs.com/akashi/p/8850258.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值