• 第四次作业


    作业四 :个人项目-小学四则运算

    作业要求来自https://edu.cnblogs.com/campus/gzcc/GZCC-16SE2/homework/2186

    我的github远程仓库的地址:https://github.com/llllll1/ls

    1. 题目要求:

    ___________________________________________________________________________________________

    像《构建之法》的人物阿超那样,写一个能自动生成小学四则运算题目的命令行 "软件"。

    具体要求:任何编程语言都可以,命令行程序接受一个数字输入,然后输出相应数目的四则运算题目和答案。例如输入数字是 30, 那就输出 30 道题目和答案。 运算式子必须至少有两个运算符,运算数字是在 100 之内的正整数,答案不能是负数。 如:

    23 - 3 * 4 = 11

    二、扩展要求:

    ___________________________________________________________________________________________

    1) 要求能出和真分数 (二分之一, 十二分之五,等)相关的练习题。

    2) 并且要求能处理用户的输入,并判断对错,打分统计。 要求能处理用户输入的真分数, 如 1/2, 5/12 等。

    三、设计思路:

    ___________________________________________________________________________________________

    工具:IntelliJ IDEA 2018

    语言:Java

    思路:先让用户输入想要生成的题目数量,然后产生随机的符号与数字组合,进行四则运算,然后统计用户做题结果,计算出正确率

    方法: main()方法;

    getRandom方法:产生随机数与运算符;

    getFuhaoJieguo()方法:用于四则的规则

    yunsuan()方法:用于结合随机产生的符号与数字并对其进行运算

    ZhanShi()方法:用于显示正确率

    四、个人软件过程耗时估计与统计表

    ___________________________________________________________________________________________

    PSP2.1

    Personal Software Process Stages

    Time Senior Student

    Time

    minute

    Planning

    计划

    8

    5

    · Estimate

    估计这个任务需要多少时间

    12

    30

    Development

    开发

    90

    20

    · Analysis

    需求分析 (包括学习新技术)

    20

    25

    · Design Spec

    生成设计文档

    0

    0

    · Design Review

    设计复审

    3

    6

    · Coding Standard

    代码规范

    0

    5

    · Design

    具体设计

    10

    20

    · Coding

    具体编码

    35

    35

    · Code Review

    代码复审

    10

    10

    · Test

    测试(自我测试,修改代码,提交修改)

    15

    15

    Reporting

    报告

    9

    10

    ·

    测试报告

    0

    0

    ·

    计算工作量

    5

    10

    ·

    并提出过程改进计划

    0

    0

    五、主要代码

    ___________________________________________________________________________________________


    import java.util.Scanner;
    
    public class Fourth
    {
        private int timu=0;//题目总数
        private int zhengque=0;//做对的题目数
        private int zuixiao=0;//数字下限
        private int zuida=100;//数字上线
        private String jieguo="";
        private char fuhao[]=new char[]{'+','-','*','/'};
        private  float jieguoNumber=0;
        public static void main (String[] args)
        {
            Fourth fourth=new Fourth();
            System.out.print("请问你要生成多少题目?:");
            Scanner tiqu = new Scanner(System.in);
            int number = tiqu.nextInt();
            fourth.settimu(number);
            fourth.ZhanShi();
        }
        public void settimu(int timu) {
            this.timu = timu;
        }
        private int getRandomNumber()//产生随机
        {
            return  (int)(zuixiao+Math.random()*(zuida-zuixiao+1));
        }
        private char getRandomFuhao()//产生随机
        {
            int random=(int)(Math.random()*4);
            return fuhao[random];
        }
        private float getFuhaoJieguo(char fuhao,float x,float y)//四则运算
        {
            float jieguo=0;
            switch (fuhao){
                case '+':
                    jieguo=x+y;
                    break;
                case '*':
                    jieguo=x*y;
                    break;
                case '-':
                    jieguo=x-y;
                    break;
                case '/':
                    jieguo=x/y;
                    break;
            }
            return jieguo;
        }
        private void  yunsuan()
        {
            int number[]=new int[3];
            char []fuhao=new char[2];
            while (true)
            {
                for(int i=0;i<number.length;i++)
                {
                    number[i]=getRandomNumber();
                }
                fuhao[0]=getRandomFuhao();
                fuhao[1]=getRandomFuhao();
                if(fuhao[0]=='*' || fuhao[0]=='/')//如果是乘法或者是除法就执行了
                {
                    if(number[1]==0)continue;
                    jieguoNumber=getFuhaoJieguo(fuhao[0],number[0],number[1]);
                    if(fuhao[1]=='/' && number[2]==0)continue;
                    jieguoNumber=getFuhaoJieguo(fuhao[1],jieguoNumber,number[2]);
                }else
                {
                    if(fuhao[1]=='/'&& number[2]==0)continue;
                    if(fuhao[0]=='-')
                    {
                        jieguoNumber=getFuhaoJieguo(fuhao[1],-number[1],number[2]);
                        fuhao[0]='+';
                    }
                    else {
                        jieguoNumber=getFuhaoJieguo(fuhao[1],number[1],number[2]);
                    }
                    jieguoNumber=getFuhaoJieguo(fuhao[0],number[0],jieguoNumber);
                }
                if(jieguoNumber<0)continue;
                else break;
            }
            jieguo=number[0]+""+fuhao[0]+number[1]+fuhao[1]+number[2];
            System.out.print(jieguo+"=");// 把随机之后的数字与符号都输出
            Scanner tiqu = new Scanner(System.in);
            float age = tiqu.nextFloat();
            if(Math.abs(age-jieguoNumber)>0.01)//判断用户输入是否正确
            {
                System.out.print("你做错了,答案是:"+String.format("%.2f", jieguoNumber)+"
    ");
            }else{
                System.out.print("你做对了
    ");
                zhengque++;//做对了之后正确的题目数量加一
            }
        }
        public void ZhanShi()
        {
            int shengyutimu=timu;
            while (shengyutimu>0){
                shengyutimu--;
                yunsuan();
            }
            System.out.print("你回答的正确率为"+(float)zhengque/timu);//显示正确率
        }
    
    }
    Fourth

     

    六、遇到的问题与体会

    ___________________________________________________________________________________________

    遇到的问题:不知道如何产生随机的符号与数字并进行结合运算

    解决方法:有上过度娘搜索问题的解决方法,可是东西不知道怎么归纳,后来选择与同学进行交流,问了几个有思路的同学,慢慢自己就摸索出来了。

    体会:写代码的时候首先要想到自己应该如何去完成它,如何去实现它,然后才着手进行编写,而不是一边想一边写,那样等之后写到一个地方卡住了,不知道怎么写了可能就会进行不下去,当你又有另一种思路的时候,可能前面便携的代码都需要修改,就白费了。

  • 相关阅读:
    Python笔试题(递归)
    MYSQL经典面试题
    Linux常用命令
    HTTP协议相关面试题
    Flask面试题
    史上最全DVWA 笔记
    ssh root Permission denied
    odoo Reference 选择model 然后选择record
    定体, 定压, 定温, 绝热 Q E A 公式
    Vmware Bluetooth
  • 原文地址:https://www.cnblogs.com/lys1894/p/9789400.html
Copyright © 2020-2023  润新知