软件工程概论作业二

题目:

设计思想:随机产生相应个数的随机数当做运算数,随机产生0-1或0-3当做运算符。运用if语句控制变量的运行,是否有括号,加减是否有负数,除法是否有余数。数值范围的控制通过随机数int x1=(int)(Math.random()*fan2+fan1)控制。

package sizeyunsuan2;

import java.util.Scanner;
public class yunsuan2 {
   
        
    
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        Scanner num=new Scanner(System.in);
        System.out.println("请选择题目类型:1.整数    2.真分数");
        int type=num.nextInt();
        System.out.println("请输入数值范围起始值:");
        int fan1=num.nextInt();
        System.out.println("请输入数值范围终点值:");
        int fan2=num.nextInt();
        
        if(type==1)
        {
            System.out.println("请输入出题数量:");
            int n = num.nextInt();
            System.out.println("请选择是否有乘除法:1.是   2.否");
            int chu=num.nextInt();
            System.out.println("请选择加减是否有负数:1.是   2.否");
            int fu=num.nextInt();
            System.out.println("请选择除法是否有余数:1.是   2.否");
            int yu=num.nextInt();
            
            //这个数组是用来存放已经出好的题
            String timu[]=new String [n];
            String q1="";

            if(chu==1&&fu==1&&yu==1)
            {
            for(int i=0;i<n;i++)
            {   
                int z=0;
            int x=(int)(Math.random()*fan2+fan1);//第一个数
            int y=(int)(Math.random()*fan2+fan1);//第二个数
            int a=(int)(Math.random() * 4);//用来判断四则运算的符号
                z=x%y;//判断是否有余数
            if(a==0)q1=x+"+"+y+"=";
            if(a==1)q1=x+"-"+y+"="; 
            if(a==2)q1=x+"*"+y+"="; 
            if(a==3&&(z!=0))q1=x+"/"+y+"=";            
             int j;
                for(j=0;j<i;j++)
                    {
                       if(q1.equals(timu[j]))
                       {
                           i--;
                           break;
                       }
                    }
                if(j==i){
                    timu[i]=q1;
                
                    System.out.println(q1);}
                }
            }
            if(chu==1&&fu==1&&yu==2)
            {
            for(int i=0;i<n;i++)
            {
                int z=0;
            int x=(int)(Math.random()*fan2+fan1);//第一个数
            int y=(int)(Math.random()*fan2+fan1);//第二个数
            int a=(int)(Math.random() * 4);//用来判断四则运算的符号
                z=x%y;//判断是否有余数
            if(a==0)q1=x+"+"+y+"=";
            if(a==1)q1=x+"-"+y+"="; 
            if(a==2)q1=x+"*"+y+"="; 
            if(a==3&&(z==0))q1=x+"/"+y+"=";            
             int j;
                for(j=0;j<i;j++)
                    {
                       if(q1.equals(timu[j]))
                       {
                           i--;
                           break;
                       }
                    }
                if(j==i){
                    timu[i]=q1;
                
                    System.out.println(q1);}
                }
            }
            if(chu==1&&fu==2&&yu==1)
            {
                for(int i=0;i<n;i++)
                {
                    int z=0;
                int x=(int)(Math.random()*fan2+fan1);//第一个数
                int y=(int)(Math.random()*fan2+fan1);//第二个数
                int a=(int)(Math.random() * 4);//用来判断四则运算的符号
                z=x%y;//判断是否有余数
                if(a==0)q1=x+"+"+y+"=";
                if(a==1&&(x>=y))q1=x+"-"+y+"="; 
                if(a==2)q1=x+"*"+y+"="; 
                if(a==3&&(z!=0))q1=x+"/"+y+"=";            
                 int j;
                    for(j=0;j<i;j++)
                        {
                           if(q1.equals(timu[j]))
                           {
                               i--;
                               break;
                           }
                        }
                    if(j==i){
                        timu[i]=q1;
                    
                        System.out.println(q1);}
                    }
            }
            if(chu==1&&fu==2&&yu==2)
            {
                for(int i=0;i<n;i++)
                {
                    int z=0;
                int x=(int)(Math.random()*fan2+fan1);//第一个数
                int y=(int)(Math.random()*fan2+fan1);//第二个数
                int a=(int)(Math.random() * 4);//用来判断四则运算的符号
                z=x%y;//判断是否有余数
                if(a==0)q1=x+"+"+y+"=";
                if(a==1&&(x>=y))q1=x+"-"+y+"="; 
                if(a==2)q1=x+"*"+y+"="; 
                if(a==3&&(z==0))q1=x+"/"+y+"=";            
                 int j;
                    for(j=0;j<i;j++)
                        {
                           if(q1.equals(timu[j]))
                           {
                               i--;
                               break;
                           }
                        }
                    if(j==i){
                        timu[i]=q1;
                    
                        System.out.println(q1);}
                    }
            }
            if(chu==2&&fu==1)
            {
                for(int i=0;i<n;i++)
                {
                int x=(int)(Math.random()*fan2+fan1);//第一个数
                int y=(int)(Math.random()*fan2+fan1);//第二个数
                int a=(int)(Math.random() * 2);//用来判断四则运算的符号
                if(a==0)q1=x+"+"+y+"=";
                if(a==1)q1=x+"-"+y+"=";         
                 int j;
                    for(j=0;j<i;j++)
                        {
                           if(q1.equals(timu[j]))
                           {
                               i--;
                               break;
                           }
                        }
                    if(j==i){
                        timu[i]=q1;
                    
                        System.out.println(q1);}
                    }
            }
            if(chu==2&&fu==2)
            {
                for(int i=0;i<n;i++)
                {
                int x=(int)(Math.random()*fan2+fan1);//第一个数
                int y=(int)(Math.random()*fan2+fan1);//第二个数
                int a=(int)(Math.random() * 2);//用来判断四则运算的符号
                if(a==0)q1=x+"+"+y+"=";
                if(a==1&&(x>=y))q1=x+"-"+y+"=";         
                 int j;
                    for(j=0;j<i;j++)
                        {
                           if(q1.equals(timu[j]))
                           {
                               i--;
                               break;
                           }
                        }
                    if(j==i){
                        timu[i]=q1;
                    
                        System.out.println(q1);}
                    }
            }
            
            
            
        }
        if(type==2)
        {   
            
            System.out.println("请输入出题数量:");
            int n = num.nextInt()+1;
            System.out.println("请选择是否有乘除法:1.是   2.否");
            int chu=num.nextInt();
            System.out.println("请选择加减是否有负数:1.是   2.否");
            int fu=num.nextInt();

            //这个数组是用来存放已经出好的题
            String timu[]=new String [n];            
            if(chu==1&&fu==1)
            {
            int z=0,z1,z2;
            for(int i=0;i<n;i++)
            {
                int x1=(int)(Math.random()*fan2+fan1);//分子
                int y1=(int)(Math.random()*fan2+fan1+1);//分母
                z1=x1/y1;
                
                int x2=(int)(Math.random()*fan2+fan1+1);//分子
                int y2=(int)(Math.random()*fan2+fan1+1);//分母
                z2=x2/y2;
                
                String q1="";
                int a=(int)(Math.random() * 4);//用来判断四则运算的符号
                if(x2==0&&a==3) i--;
                else{
            if(a==0) q1=x1+"/"+y1+"+"+x2+"/"+y2+"=";
        
            if(a==1) q1=x1+"/"+y1+"-"+x2+"/"+y2+"=";
        
            if(a==2) q1="("+x1+"/"+y1+")"+"*"+"("+x2+"/"+y2+")"+"=";
            
            if(a==3&&(z2!=0)&&(z!=0)) q1="("+x1+"/"+y1+")"+"/"+"("+x2+"/"+y2+")"+"=";
            int j;
            for(j=0;j<i;j++)
                {
                   if(q1.equals(timu[j]))
                   {
                       i--;
                       break;
                   }
                }
            if(j==i){
                timu[i]=q1;
            
                System.out.println(q1);}
            }            
            }
            }
            if(chu==2&&fu==1)
            {
            int z1,z2;
            for(int i=0;i<n;i++)
            {
                int x1=(int)(Math.random()*fan2+fan1);//分子
                int y1=(int)(Math.random()*fan2+fan1+1);//分母
                z1=x1/y1;
                
                int x2=(int)(Math.random()*fan1);//分子
                int y2=(int)(Math.random()*fan2+fan1+1);//分母
                z2=x2/y2;
                
                String q1="";
                int a=(int)(Math.random() * 2);//用来判断四则运算的符号
                if(x2==0&&a==3) i--;
                else{
            if(a==0) q1=x1+"/"+y1+"+"+x2+"/"+y2+"=";
        
            if(a==1) q1=x1+"/"+y1+"-"+x2+"/"+y2+"=";

            int j;
            for(j=0;j<i;j++)
                {
                   if(q1.equals(timu[j]))
                   {
                       i--;
                       break;
                   }
                }
            if(j==i){
                timu[i]=q1;
            
                System.out.println(q1);}
            }            
            }
            }
            if(chu==1&&fu==2)
            {
            int z1,z2;
            for(int i=0;i<n;i++)
            {
                int x1=(int)(Math.random()*fan2+fan1);//分子
                int y1=(int)(Math.random()*fan2+fan1+1);//分母
                z1=x1/y1;
                
                int x2=(int)(Math.random()*fan1);//分子
                int y2=(int)(Math.random()*fan2+fan1+1);//分母
                z2=x2/y2;
                
                String q1="";
                int a=(int)(Math.random() * 4);//用来判断四则运算的符号
                if(x2==0&&a==3) i--;
                else{
            if(a==0) q1=x1+"/"+y1+"+"+x2+"/"+y2+"=";
        
            if(a==1&&(z1>=z2)) q1=x1+"/"+y1+"-"+x2+"/"+y2+"=";
        
            if(a==2) q1="("+x1+"/"+y1+")"+"*"+"("+x2+"/"+y2+")"+"=";
            
            if(a==3&&(z2!=0)) q1="("+x1+"/"+y1+")"+"/"+"("+x2+"/"+y2+")"+"=";
            int j;
            for(j=0;j<i;j++)
                {
                   if(q1.equals(timu[j]))
                   {
                       i--;
                       break;
                   }
                }
            if(j==i){
                timu[i]=q1;
            
                System.out.println(q1);}
            }            
            }
            }
            if(chu==2&&fu==2)
            {
            int z1,z2;
            for(int i=0;i<n;i++)
            {
                int x1=(int)(Math.random()*fan2+fan1);//分子
                int y1=(int)(Math.random()*fan2+fan1+1);//分母
                z1=x1/y1;
                
                int x2=(int)(Math.random()*fan1);//分子
                int y2=(int)(Math.random()*fan2+fan1+1);//分母
                z2=x2/y2;
                
                String q1="";
                int a=(int)(Math.random() * 2);//用来判断四则运算的符号
                if(x2==0&&a==3) i--;
                else{
            if(a==0) q1=x1+"/"+y1+"+"+x2+"/"+y2+"=";
        
            if(a==1&&(z1>=z2)) q1=x1+"/"+y1+"-"+x2+"/"+y2+"=";

            int j;
            for(j=0;j<i;j++)
                {
                   if(q1.equals(timu[j]))
                   {
                       i--;
                       break;
                   }
                }
            if(j==i){
                timu[i]=q1;
            
                System.out.println(q1);}
            }            
            }
            }
            
        }
        
    }

}

结果截图:

这次实验没有实现随机括号的功能,在编写过程中出现了较多错误,已经有了较为清晰的思路,但还未将程序调试成功。

原文地址:https://www.cnblogs.com/xxdcxy/p/6532608.html