软件工程个人作业02

四则运算2 程序设计思想:

    在程序1的基础上添加要求:是否有乘除法,是否有括号(这个没有完成),数值范围,加减有无负数,除法有无余数。

    在数组中存放运算符,添加一个只有加和减符号的数组,无乘除法的情况下,用这个数组即可实现。

    数值范围:在生成随机数的时候,生成随机范围内的数。

    加减有无负数:生成a,b两个随机数,a>b时生成的式子a在前。

    除法有无余数:添加判断,如果生成的两个随机数相除有余数的话,重新生成即可。

源代码

package ER;

import java.util.Scanner;

public class Sisr2 {


    public static void main(String[] args) {
        // TODO Auto-generated method stub
        String A[]=new String[4];
        A[0]="+";
        A[1]="-";
        A[2]="x";
        A[3]="÷";
        String B[]=new String[2];
        B[0]="+";
        B[1]="-";
        int a,b,c,d;
        System.out.println("选择题目类型:1.分数练习;0.整数练习");
        Scanner in=new Scanner(System.in);
        int k;
        k=in.nextInt();
        if(k==0){
            System.out.println("请输入生成题目的数量:");
            int x,y,m,n,z,l;
            x=in.nextInt();
            System.out.println("是否有乘除法:1.是;0.否");
            y=in.nextInt();
            System.out.println("请输入计算范围:");
            m=in.nextInt();
            n=in.nextInt();
            System.out.println("加减有无负数:1.有;0.无");
            z=in.nextInt();
            System.out.println("除法有无余数:1.有;0.无");
            l=in.nextInt();
            
                if(y==0&&z==0&&l==0){
                    for(int i=0;i<x;i++){ 
                        a =(int)(Math.random()*(m-n))+n;
                        b =(int)(Math.random()*(m-n))+n;
                        if(a>b){
                            System.out.println(a+B[(int)(Math.random()*2)]+b);
                        }
                        else if(a<b){
                            System.out.println(b+B[(int)(Math.random()*2)]+a);
                        }
                    }    
                }
                if(y==0&&z==0&&l==1){
                    for(int i=0;i<x;i++){ 
                        a =(int)(Math.random()*(m-n))+n;
                        b =(int)(Math.random()*(m-n))+n;
                        if(a>b){
                            System.out.println(a+B[(int)(Math.random()*2)]+b);
                        }
                        else if(a<b){
                            System.out.println(b+B[(int)(Math.random()*2)]+a);
                        }
                    }
                }
                if(y==0&&z==1&&l==0){
                    for(int i=0;i<x;i++){ 
                        a =(int)(Math.random()*(m-n))+n;
                        b =(int)(Math.random()*(m-n))+n;
                        System.out.println(a+B[(int)(Math.random()*2)]+b);
                    }
                }
                if(y==0&&z==1&&l==1){
                    for(int i=0;i<x;i++){ 
                        a =(int)(Math.random()*(m-n))+n;
                        b =(int)(Math.random()*(m-n))+n;
                        System.out.println(a+B[(int)(Math.random()*2)]+b);
                    }
                }
                if(y==1&&z==0&&l==0){
                    int j=1;
                    while(j==x){
                        a =(int)(Math.random()*(m-n))+n;
                        b =(int)(Math.random()*(m-n))+n;
                        if(a%b==0){                        
                            System.out.println(a+A[(int)(Math.random()*4)]+b);
                            j++;
                        }
                        else if(b%a==0){
                            System.out.println(b+A[(int)(Math.random()*4)]+a);
                            j++;
                    }
                }
                }
                if(y==1&&z==0&&l==1){
                    for(int i=0;i<x;i++){
                        a =(int)(Math.random()*(m-n))+n;
                        b =(int)(Math.random()*(m-n))+n;
                        if(a>b){
                            System.out.println(a+A[(int)(Math.random()*4)]+b);
                        }
                        else if(a<b){
                            System.out.println(b+A[(int)(Math.random()*4)]+a);
                        }
                    }
                }
                if(y==1&&z==1&&l==0){
                    int j1=1;
                    while(j1==x){
                        a =(int)(Math.random()*(m-n))+n;
                        b =(int)(Math.random()*(m-n))+n;
                        if(a%b==0){
                            System.out.println(a+A[(int)(Math.random()*4)]+b);
                            j1++;
                        }
                        else if(b%a==0){
                            System.out.println(b+A[(int)(Math.random()*4)]+a);
                            j1++;
                        }
                }
                }
                if(y==1&&z==1&&l==1){
                    for(int i=0;i<x;i++){ 
                        a =(int)(Math.random()*(m-n))+n;
                        b =(int)(Math.random()*(m-n))+n;
                        System.out.println(a+A[(int)(Math.random()*4)]+b);
                    }
                }
            }
        if(k==1){
            System.out.println("请输入生成题目的数量:");
            int x,y,m,n,z,l;
            x=in.nextInt();
            System.out.println("是否有乘除法:1.是;0.否");
            y=in.nextInt();
            System.out.println("请输入计算范围:");
            m=in.nextInt();
            n=in.nextInt();
            System.out.println("加减有无负数:1.有;0.无");
            z=in.nextInt();
            System.out.println("除法有无余数:1.有;0.无");
            l=in.nextInt();
            if(y==0&&z==0&&l==0){
                for(int i=0;i<x;i++){ 
                    a =(int)(Math.random()*(m-n))+n;
                    b =(int)(Math.random()*(m-n))+n;
                    c =(int)(Math.random()*(m-n))+n;
                    d =(int)(Math.random()*(m-n))+n;
                    if(a/b>c/d){
                        System.out.println(a+"/"+b+" "+B[(int)(Math.random()*2)]+" "+c+"/"+d);
                    }
                    else if(a/b<c/d){
                        System.out.println(c+"/"+d+" "+B[(int)(Math.random()*2)]+" "+a+"/"+b);
                    }
                }    
            }
            if(y==0&&z==0&&l==1){
                for(int i=0;i<x;i++){ 
                    a =(int)(Math.random()*(m-n))+n;
                    b =(int)(Math.random()*(m-n))+n;
                    c =(int)(Math.random()*(m-n))+n;
                    d =(int)(Math.random()*(m-n))+n;
                    if(a/b>c/d){
                        System.out.println(a+"/"+b+" "+B[(int)(Math.random()*2)]+" "+c+"/"+d);
                    }
                    else if(a/b<c/d){
                        System.out.println(c+"/"+d+" "+B[(int)(Math.random()*2)]+" "+a+"/"+b);
                    }
                }
            }
            if(y==0&&z==1&&l==0){
                for(int i=0;i<x;i++){ 
                    a =(int)(Math.random()*(m-n))+n;
                    b =(int)(Math.random()*(m-n))+n;
                    c =(int)(Math.random()*(m-n))+n;
                    d =(int)(Math.random()*(m-n))+n;
                    System.out.println(a+"/"+b+" "+B[(int)(Math.random()*2)]+" "+c+"/"+d);
                }
            }
            if(y==0&&z==1&&l==1){
                for(int i=0;i<x;i++){ 
                    a =(int)(Math.random()*(m-n))+n;
                    b =(int)(Math.random()*(m-n))+n;
                    c =(int)(Math.random()*(m-n))+n;
                    d =(int)(Math.random()*(m-n))+n;
                    System.out.println(a+"/"+b+" "+B[(int)(Math.random()*2)]+" "+c+"/"+d);
                }
            }
            if(y==1&&z==0&&l==0){
                int j=1;
                while(j==x){
                    a =(int)(Math.random()*(m-n))+n;
                    b =(int)(Math.random()*(m-n))+n;
                    c =(int)(Math.random()*(m-n))+n;
                    d =(int)(Math.random()*(m-n))+n;
                    if(a/b % c/d==0){                        
                        System.out.println(a+"/"+b+" "+A[(int)(Math.random()*4)]+" "+c+"/"+d);
                        j++;
                    }
                    else if(c/d % a/b==0){
                        System.out.println(c+"/"+d+" "+A[(int)(Math.random()*4)]+" "+a+"/"+b);
                        j++;
                }
            }
            }
            if(y==1&&z==0&&l==1){
                for(int i=0;i<x;i++){
                    a =(int)(Math.random()*(m-n))+n;
                    b =(int)(Math.random()*(m-n))+n;
                    c =(int)(Math.random()*(m-n))+n;
                    d =(int)(Math.random()*(m-n))+n;
                    if(a/b>c/d){
                        System.out.println(a+"/"+b+" "+A[(int)(Math.random()*4)]+" "+c+"/"+d);
                    }
                    else if(a/b<c/d){
                        System.out.println(c+"/"+d+" "+A[(int)(Math.random()*4)]+" "+a+"/"+b);
                    }
                }
            }
            if(y==1&&z==1&&l==0){
                int j1=1;
                while(j1==x){
                    a =(int)(Math.random()*(m-n))+n;
                    b =(int)(Math.random()*(m-n))+n;
                    c =(int)(Math.random()*(m-n))+n;
                    d =(int)(Math.random()*(m-n))+n;
                    if(a/b % c/d==0){
                        System.out.println(a+"/"+b+" "+A[(int)(Math.random()*4)]+" "+c+"/"+d);
                        j1++;
                    }
                    else if(c/d % a/b==0){
                        System.out.println(c+"/"+d+" "+A[(int)(Math.random()*4)]+" "+a+"/"+b);
                        j1++;
                    }
            }
            }
            if(y==1&&z==1&&l==1){
                for(int i=0;i<x;i++){ 
                    a =(int)(Math.random()*(m-n))+n;
                    b =(int)(Math.random()*(m-n))+n;
                    c =(int)(Math.random()*(m-n))+n;
                    d =(int)(Math.random()*(m-n))+n;
                    System.out.println(a+"/"+b+" "+A[(int)(Math.random()*4)]+" "+c+"/"+d);
                }
            }
        }
    }

}

运行结果截图:

  现在分数计算也有问题了,起初没问题 ,再添加括号的时候出现问题,生成不了题目,排查错误过程中也没找到解决办法,只能先放弃括号这个要求。

事件记录日志:

日期

开始时间

结束时间

中断时间

净时间

活动

备注

3/7

13:50

15:17

30min

57min

编程

作业2

3/7

19:04

20:00

20min

36min

编程

Jave web

3/8

15:10

17:30

15min

125min

编程

作业2

3/10

19:00

22:00

30min

150min

编程

作业2

3/11

12:30

15:00

10min

140min

编程

作业2

备注:3/10日 程序崩溃- -,重新编写。

缺陷记录日志:

日期

编号

类型

引入阶段

排除阶段

修复时间

修复缺陷

3/7

1

编码

编译

5min

修复被除数为0的情况

3/7

2

编码

编译

10min

修复分数不能生成式子

3/10

3

编码

编译

30min

添加括号,修改代码使程序崩溃,没有修复

周活动总结表:

任务

日期

听课(min)

编写程序

(min)

阅读课本(min)

准备考试(min)

日总结

(min)

周日3/5

周一

200

200

周二

100

100

200

周三

125

30

155

周四

90

90

周五

150

150

周六

140

140

原文地址:https://www.cnblogs.com/zhouzh/p/6535934.html