打印四则运算题目的“软件”

(1)题目要求

1.题目避免重复;
2.可定制(数量/打印方式);
3. 输入大的数量值,测试一下系统是否崩溃,反向查找系统是否优化的余地;
4.定制操作数的个数;
5.定制是否有乘除法;
6.定制是否有括号(随机加入);
7.定制数值范围(确定操作数的取值范围);

(2)源代码

package sizeyunsuan;

import java.util.*;

public class sizeyunsuan {
    
    
    public static int[] randomCommon(int n,int min, int max) //生成随机数
    {
        int[] result = new int[n];
        int count = 0;
        while(count < n) {
            int num = (int) (Math.random() * (max - min)) + min;
            boolean flag = true;
            for (int j = 0; j < n; j++) {
                if(num == result[j]){
                    flag = false;
                    break;
                }
            }
            if(flag){
                result[count] = num;
                count++;
            }
        }
        return result;
    }
    
    public static char fh(int panduan) //生成随机运算符
    {
        
        Random r = new Random();
        int yunsuanfu= r.nextInt(100);
        char fh=' ';
        if(panduan==1) //有乘除
        {
            switch(yunsuanfu%4)
            {
            case 0:fh='+';break;
            case 1:fh='-';break;
            case 2:fh='*';break;
            case 3:fh='/';break;
            }
        }
        else if(panduan==2) //无乘除
        {
            switch(yunsuanfu%2)
            {
            case 0:fh='+';break;
            case 1:fh='-';break;
            }
        }
        return fh;
    }
    
    public static void main(String[] args) {
        
        System.out.println("请输入题目个数:");
        Scanner input = new Scanner(System.in);
        int num=input.nextInt();
        
        System.out.println("请输入操作个数(1.两个 2.三个)");
        int czs=input.nextInt();
        
        System.out.println("请输入数值范围:");
        int a=input.nextInt();
        int b=input.nextInt();
        if((b-a)<num*(czs+1)) //系统崩溃条件
        {
            System.out.println("系统崩溃!");
            System.exit(0);
        }
        
        System.out.println("是否需要乘除运算(1.是 2.否)");
        int cc=input.nextInt();
        
        Random r = new Random();
        int x,y,z;
        
        if(czs==1) //操作数为2时
        {
            int []arr1 =randomCommon(num*2,a,b);
            
            
            for(int i=0;i<num*2;i++)
            {
                x=arr1[i];
                y=arr1[i+1];
                i++;
                System.out.println(""+x+fh(cc)+y+"=");
            }
            
        }
        else if(czs==2) //操作数为3时
        {
            System.out.println("是否需要括号运算(1.是 2.否)");
            int kh=input.nextInt();
            int []arr2 =randomCommon(num*3,a,b);
            
            for(int i=0;i<num*3;i++)
            {
                x=arr2[i];
                y=arr2[i+1];
                z=arr2[i+2];
                i+=2;
                
                if(kh==1) //随机加括号
                {
                    int kuohao= r.nextInt(99);
                    switch(kuohao%2)
                    {
                    case 0:System.out.println("("+x+fh(cc)+y+")"+fh(cc)+z+"=");break;
                    case 1:System.out.println(""+x+fh(cc)+"("+y+fh(cc)+z+")=");break;
                    case 2:System.out.println(""+x+fh(cc)+y+fh(cc)+z+"=");break;
                    }
                }
                else if(kh==2) //无括号
                {
                    System.out.println(""+x+fh(cc)+y+fh(cc)+z+"=");
                }
                
            }
        }
     }    
}

(3)问题&措施

1.问题:输出部分显示如下第一个数后的运算符无法显示

打印四则运算题目的“软件”

 措施:此处主要是由于java输出中“+”的运用问题,若输出开始无引用输出,系统会自动认为输出“+”相连变量的和,而非分别输出变量。

            因此只需在输出开头加上“ ""+ ”即可。

 

上一篇:2021-05-30接口练习题


下一篇:2021-05-29