• 软件工程个人作业02


    软件工程个人作业02

    程序的设计思想:

    1.在作业01的基础上通过输入a,确定题目个数,一个题目中数字有

      n,n>1,n<10,产生的随机数有n,产生的符号有n-1

    2.在作业01的基础上通过输入b,确定数值范围;

    3.在作业01的基础上构建checknum类,来实现化简和查看除法有无

     余数;

    4.可以控制下列参数

       4.1是否有乘除法:有,符号的随机数在0-1之间,无,符号的随机数在0-3之间;

       4.2是否有括号(最多可以支持十个数参与计算):有,通过确定运算符号的位置来添加括号;

       4.3加减有无负数:有,通过随机数01来控制数的正负;

    5.用矩阵来记录题目中的数字和符号,就行验重(目前没有实现)

    源程序代码:

    package math;
    import java.util.Random;
    import java.util.Scanner;
    public class math{
    
        public static void main(String[] args) {
            // TODO Auto-generated method 
            Scanner in=new Scanner(System.in);
            String output="";
            System.out.println("请输入题目个数:");  //输入提示
            int num = in.nextInt();  //输入题目个数
            System.out.println("请输入取值范围:(小于100)");  //输入提示
            int rnum = in.nextInt();  //输入取值范围
            System.out.println("请输入是否有正负数:(1.有 2.没有)");  //输入提示
            int zfnum = in.nextInt();  //输入是否有正负数
            System.out.println("除法是否有余数:(3.有 4.没有)");  //输入提示
            int ys=in.nextInt();  //输入是否有余数
            System.out.println("请输入是否有乘除法:(5.有 6.没有)");  //输入提示
            int fhn = in.nextInt();  //输入是否有乘除法
            System.out.println("请输入是否有括号:(7.有 8.没有)");  //输入提示
            int kh = in.nextInt();  //输入是否有括号
            Random random =new Random();
            int[][]sz=new int[num][10];
            int f=0;    //正负数的数字表示
            int fhnum=0;    //运算符号的数字表示
            char zf=' ';    //正负数的符号表示
            char[][] fh=new char[num][10];    //运算符号的符号表示
            int jl;   //记录除法的位置
            int kh1,kh2;   //记录括号的位置
            for(int l=0;l<num;l++)
            {
                int sznum=2+random.nextInt(9);   //每道题的数字个数 2-10
                for(int i=0;i<=sznum;i++)   //生成数字
                {
                    sz[l][i]=random.nextInt(100)+1;    
                    for(;;)      //控制数的范围
                    {
                        if(sz[l][i]>rnum)
                            sz[l][i]=random.nextInt(100)+1;
                        else
                            break;
                    }
                }
                for(int i=0;i<=sznum;i++)    //生成运算符号
                {
                    if(fhn==5)   //计算有乘除法
                    {
                        fhnum=random.nextInt(4);
                        if(fhnum==0)
                            fh[l][i]='+';
                        if(fhnum==1)
                            fh[l][i]='-';
                        if(fhnum==2)
                            fh[l][i]='*';
                        if(fhnum==3)
                        {
                            fh[l][i]='/';
                            if(ys==3)   //计算除法时有余数
                            {
                                jl=i;   //确定除法符号的位置
                                for(;;)
                                {
                                    if(sz[l][i]%sz[l][i+1]!=0)
                                        break;
                                    else 
                                    {
                                        sz[l][i]=random.nextInt(100)+1;
                                        sz[l][i+1]=random.nextInt(100)+1;
                                    }
                                }
                            }
                            if(ys==4)     //计算除法时有余数
                            {
                                jl=i;   //确定除法符号的位置
                                for(;;)
                                {
                                    if(sz[l][i]%sz[l][i+1]!=0)
                                    {
                                        sz[l][i]=random.nextInt(100)+1;
                                        sz[l][i+1]=random.nextInt(100)+1;
                                    }
                                    else 
                                        break;
                                }
                            }
                        }
                    }
                    if(fhn==6)   //计算无乘除法
                    {
                        fhnum=random.nextInt(2);
                        if(fhnum==0)
                            fh[l][i]='+';
                        if(fhnum==1)
                            fh[l][i]='-';
                    }
                }
                fh[l][sznum]='=';
                System.out.print(l+1+": ");
                if(kh==7)  //有括号时
                {
                    kh1=random.nextInt(sznum-1)+1;
                    for(int i=0;i<kh1;i++)
                    {
                        if(zfnum==1)  //计算有负数
                            f=random.nextInt(2);
                        if(f==0)     //正数
                            zf='+';
                        if(f==1)     //负数
                            zf='-';
                        System.out.print("("+zf+sz[l][i]+")"+fh[l][i]);
                    }
                    System.out.print("(("+zf+sz[l][kh1]+")"+fh[l][kh1]+"("+zf+sz[l][kh1+1]+"))"+fh[l][kh1+1]);
                    for(int i=kh1+2;i<=sznum;i++)
                    {
                        if(zfnum==1)  //计算有负数
                            f=random.nextInt(2);
                        if(f==0)     //正数
                            zf='+';
                        if(f==1)     //负数
                            zf='-';
                        System.out.print("("+zf+sz[l][i]+")"+fh[l][i]);
                    }
                    System.out.println();
                }
                if(kh==8)    //没有括号时
                {
                    for(int i=0;i<=sznum;i++)
                    {
                        if(zfnum==1)  //计算有负数
                            f=random.nextInt(2);
                        if(f==0)     //正数
                            zf='+';
                        if(f==1)     //负数
                            zf='-';
                        System.out.print("("+zf+sz[l][i]+")"+fh[l][i]);
                    }
                    System.out.println();
                }
            }
        }
    }

    运行结果截图:

     

    分析一下完成时遇到的困难:

    1.Mian 函数不存在,缺少;

    解决方法:重新打开eclipse

    2.在写代码的时候,把程序就行分块和继承可以提高代码可读性。但是我写的数字是分数为string类型,在父类函数中的操作用int类型比较简单,所以没有构建父类函数。

    3.在写的时候,随机数直接用输入数据控制会产生数据溢出,可以给随机数规定了一个大范围,输入只能在大范围内,可以避免数据溢出报错

    4.在写代码时出现了sz[l][i]%sz[l][i+1]==0会报错,所以要改成不等于

    5.有时如果if语句没有写else则会显示错误。

    6.Main 函数找不到,解决方法:将代码在重新输入一次(代码不变)

                                                          周活动总结表

            姓名:谷伟华                            日期 2016/3/19

     

    听课

    编写代码

    阅读课本

    准备考试

    其他

     

    日总计

    周日

    100

     

     

     

     

     

    100

    周一

     

    90

     

     

     

     

    90

    周二

     

    80

    30

     

     

     

    110

    周三

     

    60

    20

     

     

     

    80

    周四

     

    80

    40

     

     

     

    120

    周五

     

    130

     

     

    120

     

    250

    周六

     

     

     

     

    50

     

    50

    周总计

    100

    440

    90

     

    170

     

    800

      

     

                                  时间记录日志

              学生:谷伟华                    日期:2016/3/19

              教师:王建民                    课程:软件工程

    日期

    开始时间

    结束时间

    中断时间

    净时间

    活动

    备注

    C

    U

    3/14

    8:00

    9:50

    10

    100

    听课

     

     

     

     

    15:00

    17:00

    30

    90

    讨论作业思路

    上厕所、休息

     

     

    3/15

    16:00

    18:00

    10

    110

    编写程序、看《构建之法》

    上厕所

     

     

    3/16

    15:20

    17:00

    20

    80

    编写程序、看《构建之法》

    上厕所、休息

     

     

    3/17

    9:00

    11:30

    30

    120

    编写程序、看《构建之法》

    上厕所、休息

     

     

    3/18

    16:30

    18:30

    20

    100

    编写程序

    上厕所、准备上课

     

     

     

    21:00

    23:30

     

    150

    编写程序、写博客园要发表的东西

     

     

     

    3/19

    12:40

    13:30

     

    50

    写博客园要发表的东西

     

     

     

     

     

                           

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

      缺陷记录日志

                          学生:谷伟华

                          日期:2016/3/19

                          教员:王建民

                          程序号:四则运算2

    日期

    编号

    类型

    引入阶段

    排除阶段

    修复时间

    修复缺陷

    3/15

    01

    10

    编码

    编译

    5min

     

    描述:Mian 函数不存在,缺少;解决方法:重新打开eclipse

    3/16

    02

    20

    编码

    编译

    第二天

     

    描述:随机数直接用输入数据控制会产生数据溢出,可以给随机数规定了一个大范围,输入只能在大范围内,可以避免数据溢出报错

    3/17

    03

    70

    编码

    编译

    1min

     

    描述:有时如果if语句没有写else则会显示错误

    3/18

    04

    70

    编码

    编译

    2min

     

    描述:sz[l][i]%sz[l][i+1]==0会报错,所以要改成不等于

     

     

     

  • 相关阅读:
    win10+PHP 安装memcache
    win10+PHP 安装redis
    一个github搞定微信小程序支付系列
    Linux下新建一个站点
    Linux下更改mysql版本
    零基础配置Linux服务器环境
    手把手教你使用ueditor
    react学习三
    react学习二 生命周期
    window.location.replace和window.location.href区别
  • 原文地址:https://www.cnblogs.com/gzgz/p/5295323.html
Copyright © 2020-2023  润新知