软件工程个人作业03

import java.util.Random;
import java.util.Scanner;
import javax.swing.JOptionPane;

public class Arithmetic {

    public static void main(String[] args) {
        // TODO 自动生成的方法存根
        int c;//选择
        int c1,c4,c5,c6,c7,c8;
        int a,b,d1;//二位数运算
        int c2,c3;
        int e=0;//运算符
        String s="";
        double d=0.0;//2位数的结果,用户
        double f=0.0,g=0.0;//2位数结果,系统,多位数结果,系统
        int flag=0;//判断是否输出
        int m=0;//题数
        Random rand = new Random();
        for(int i=0;i<100000000;i++)
        {                 System.out.println("请输入选择:1、2位数运算  2、多位数运算 3、退出");
                Scanner input=new Scanner(System.in) ;
                c=input.nextInt();
                if(c==1)
                {
                    System.out.println("请输入选择:1 、有乘除法 2、无乘除法");
                     Scanner input1=new Scanner(System.in) ;
                     c1=input1.nextInt();
                     System.out.println("请输入数值范围的前域 ");
                     Scanner input2=new Scanner(System.in) ;
                     c2=input2.nextInt();
                     System.out.println("请输入数值范围的后域");
                     Scanner input3=new Scanner(System.in) ;
                     c3=input3.nextInt();
                     System.out.println("请输入选择:1、加减有负数 2、加减无负数");
                     Scanner input4=new Scanner(System.in) ;
                     c4=input4.nextInt();
                     System.out.println("请输入选择:1、除法有余数 2、除法无余数");
                     Scanner input5=new Scanner(System.in) ;
                     c5=input5.nextInt();
                     System.out.println("请输入出题数量");
                     Scanner input6=new Scanner(System.in) ;
                     c6=input6.nextInt();
                     System.out.println("请输入在一行中输出几列运算式?");
                     Scanner input7=new Scanner(System.in) ;
                     c7=input7.nextInt();
                        String []Repeat=new String[2*c6];
                     for(int w=0;w<c6;w++)
                     {
                         int w1;
                         w1=w;
                        //有无乘除法
                         if(c1==1)
                        {
                            e=rand.nextInt(4);
                         }
                         if(c1==2)
                         {
                             e=rand.nextInt(2);
                         }
                         //数值范围
                         a=rand.nextInt(c3)%(c3-c2+1)+c2;
                         b=rand.nextInt(c3)%(c3-c2+1)+c2;
                         //加减有无负数
                         if(c4==1)//有负数
                         {
                             flag=0;
                         }
                         if(c4==2)
                         { 
                             if(e==0)
                             {
                                 if((a+b)>=0)
                                 {
                                     flag=0;
                                 }
                                 else 
                                 {
                                     flag=1;
                                 }
                             }
                             if(e==1)
                             {
                                 if((a-b)>=0)
                                 {
                                     flag=0;
                                 }
                                 else
                                 {
                                     flag=1;
                                 }
                             }
                         }
                        //符号
                         if(e==0)
                         {
                             s="+";
                             f=a+b;
                         }
                         if(e==1)
                         {
                             s="-";
                             f=a-b;
                         }
                         if(e==2)
                         {
                             s="*";
                             f=a*b;
                         }
                         if(e==3)
                        {
                            if(b!=0)
                            {
                                if(c5==1)
                               {
                                   s="/"; 
                                    f=a/b;
                                 }
                                if(c5==2)
                                 {
                                     if(a%b==0)
                                    {
                                        s="/";
                                        f=a/b;
                                     }
                                      if(a%b!=0)
                                      {
                                          flag=1;
                                    }
                                }
                                 
                             }
                         }
                         //判断重复
                         if(a<0.0&&b>=0.0)
                         {
                             Repeat[w]="("+a+")"+s+b;
                        }
                         if(a>=0.0&&b<0.0)
                         {
                             Repeat[w]=a+s+"("+b+")";
                        }
                         if(a<0.0&&b<0.0)
                        {
                             Repeat[w]="("+a+")"+s+"("+b+")";
                        }
                        if(a>=0.0&&b>=0.0)
                        {
                             Repeat[w]=a+s+b;
                        }
                        for(int w2=0;w2<w1;w2++)
                        {
                           if(Repeat[w].equals(Repeat[w2]))
                            {
                                flag =1;
                            }
                            else
                            {flag =0;}
                        }
                        //打印
                        if(flag==0)
                        {
                            if((w+1)%c7==0)
                              {
                                for(int k=0;k<10000000;k++)
                                  {
                                       String inputx=JOptionPane.showInputDialog(Repeat[w]+"="+"请输入计算结果");
                                      if(inputx!=null&&!inputx.equals(""))
                                      {
                                        d=Double.parseDouble(inputx);
                                        break;
                                     }     
                                  }
                                  if(d==f)
                                    {
                                        System.out.println(Repeat[w]+"="+d+"正确");    
                                        m++;
                                    }
                                    if(d!=f)
                                    {
                                        System.out.println(Repeat[w]+"="+d+"不正确");
                                    }
                              }
                              else
                              {
                                  
                                  for(int k=0;k<10000000;k++)
                                  {
                                       String inputx=JOptionPane.showInputDialog(Repeat[w]+"="+"请输入计算结果");
                                      if(inputx!=null&&!inputx.equals(""))
                                     {
                                        d=Double.parseDouble(inputx);
                                        break;
                                     }     
                                  }
                                if(d==f)
                                {
                                    System.out.print(Repeat[w]+"="+d+"正确");    
                                    m++;
                                }
                                if(d!=f)
                                {
                                   System.out.print(Repeat[w]+"="+d+"不正确");
                                }
                              }
                        }
                        if(flag==1)
                        {
                            c6++;
                        }
                        
                   }
                   System.out.println("共"+c6+"道题"+"    "+m+"道题正确");
                  }
               if(c==2)
               {
                    
                    System.out.println("请输入选择:1 、有乘除法 2、无乘除法");
                     Scanner input1=new Scanner(System.in) ;
                    c1=input1.nextInt();
                    System.out.println("请输入数值范围的前域 ");
                    Scanner input2=new Scanner(System.in) ;
                    c2=input2.nextInt();
                    System.out.println("请输入数值范围的后域");
                    Scanner input3=new Scanner(System.in) ;
                    c3=input3.nextInt();
                   /* System.out.println("请输入选择:1、加减有负数 2、加减无负数");
                    Scanner input4=new Scanner(System.in) ;
                    c4=input4.nextInt();
                    System.out.println("请输入选择:1、除法有余数 2、除法无余数");
                    Scanner input5=new Scanner(System.in) ;
                    c5=input5.nextInt();*/
                    System.out.println("请输入出题数量");
                    Scanner input6=new Scanner(System.in) ;
                    c6=input6.nextInt();
                    System.out.println("请输入在一行中输出几列运算式?");
                    Scanner input7=new Scanner(System.in) ;
                    c7=input7.nextInt();
 
                   System.out.println("请输入选择: 1、有括号 2、无括号");
                     Scanner input8=new Scanner(System.in) ;
                     c8=input8.nextInt();
                    //有无乘除法
                     if(c1==1)
                     {
                         e=rand.nextInt(4);
                     }
                     if(c1==2)
                      {
                         e=rand.nextInt(2);
                    }
                     //数值范围
                     a=rand.nextInt(c3)%(c3-c2+1)+c2;
                     b=rand.nextInt(c3)%(c3-c2+1)+c2;
                     String []Repeat=new String[2*c6];
                     if(e==0)
                     {
                         s="+";
                         g=a+b;
                     }
                     if(e==1)
                     {
                         s="-";
                         g=a-b;
                     }
                    if(e==2)
                     {
                         s="*";
                         g=a*b;
                     }
                     if(e==3)
                     {
                         if(b==0)
                        {
                             flag=1;
                         }
                         if(b!=0)
                         {
                             flag=0;
                             s="/";
                             g=a/b;
                         }
                     }
                     //出题数量
                     for(int w=0;w<c6;w++)
                     {
                         int p;//0为在原来基础上前面加数,1则是在后面加数
                         int ws;//几位数的运算
                         ws=rand.nextInt(8);
                         Repeat[w]=a+s+b;
                         if(c8==1)//有括号
                         {
                             
                             for(int w1=0;w1<ws;w1++)
                             {
                                 d1=rand.nextInt(c3)%(c3-c2+1)+c2;
                                p=rand.nextInt(2);
                                 if(c1==1)
                                 {
                                     e=rand.nextInt(4);
                                 }
                                 if(c1==2)
                                 {
                                     e=rand.nextInt(2);
                                 }
                                 if(e==0)
                                {
                                     s="+";
                                     g=d1+g;
                                 }
                                 if(e==1)
                                 {
                                      s="-";
                                     if(p==0)
                                     {
                                         g=d1-g;
                                     }
                                    if(p==1)
                                     {
                                         g=g-d1;
                                     }
                                 }
                                if(e==2)
                                 {
                                     s="*";
                                     g=d1*g;
                                 }
                                 if(e==3)
                                 {
                                     if(b==0||g==0)
                                     {
                                         flag=1;
                                     }
                                     if(b!=0&&g!=0)
                                     {
                                         flag=0;
                                         s="/";
                                         if(p==0)
                                         {
                                             g=d1/g;
                                         }
                                         if(p==1)
                                        {
                                             g=g/d1;
                                         }
                                     }
                                 }
                             if(p==0)
                             {
                                  Repeat[w]=d1+s+"("+Repeat[w]+")"; 
                             }
                             if(p==1)
                             {
                                 Repeat[w]="("+Repeat[w]+")"+s+d1;         
                             }
                             }
                         }
                         if(c8==2)//无括号
                         {
                             int length=0;
                             
                             String [][]Repeat1=new String[2*c6][100];
                             Repeat1[w][0]=""+a;
                             Repeat1[w][1]=s;
                             Repeat1[w][2]=""+b;
                             for(int w1=0;w1<ws;w1++)
                             {
                                
                                 d1=rand.nextInt(c3)%(c3-c2+1)+c2;
                                 p=rand.nextInt(2);
                                 if(c1==1)
                                 {
                                     e=rand.nextInt(4);
                                 }
                                 if(c1==2)
                                 {
                                     e=rand.nextInt(2);
                                 }
                                 if(e==0)
                                 {
                                     s="+";
                                   
                                 }
                                if(e==1)
                                 {
                                     s="-";
                                   
                                 }
                                 if(e==2)
                                 {
                                     s="*";
                                     
                                 }
                                if(e==3)
                                 {
                                    if(b==0)
                                    {
                                        flag=1;
                                    }
                                     if(b!=0)
                                     {
                                         flag=0;
                                         s="/";
                                        
                                     }
                                 }

                             if(p==0)
                             {
                                 int sl=0;//实际长度
                                 Repeat[w]=d1+s+Repeat[w];
                                 length=Repeat1[w].length;
                                  for(int xx=0;xx<length;xx++)
                                  {
                                      String ss="";
                                      ss=Repeat1[w][xx];
                                      if(ss!=null&&!ss.equals(""))
                                      {
                                          sl++;
                                      }
                                      else
                                      {
                                         break;
                                      }
                                  }
                                  
                                   for(int l=0;l<sl;l++)
                                   {
                                       Repeat1[w][l+2]=Repeat1[w][l];
                                   }
                                   Repeat1[w][0]=""+d1;
                                   Repeat1[w][1]=s;
                              }
                              if(p==1)
                              {
                                  int sl=0;
                                  Repeat[w]=Repeat[w]+s+d1;
                                  length=Repeat1[w].length;
                                  for(int xx=0;xx<length;xx++)
                                  {
                                      String ss="";
                                      ss=Repeat1[w][xx];
                                      if(ss!=null&&!ss.equals(""))
                                      {
                                          sl++;
                                      }
                                      else
                                      {
                                          break;
                                      }
                                  }
                                  Repeat1[w][sl]=s;
                                  Repeat1[w][sl+1]=""+d1;
                              }
                            }
                              //计算结果
                              int []ns=new int[10];
                              int []nf=new int[9];
                              int ll=(Repeat1[w].length);
                              int sl=0;
                              for(int xx=0;xx<ll;xx++)
                              {
                                  String ss="";
                                  ss=Repeat1[w][xx];
                                  if(ss!=null&&!ss.equals(""))
                                  {
                                      sl++;
                                  }
                                  else
                                  {
                                      break;
                                  }
                              }                             
                              for(int l1=0;l1<sl;l1++)
                              {
                                  if(l1%2==0)
                                  {
                                      ns[l1/2]=Integer.parseInt(Repeat1[w][l1]);
                                  }
                                  if(l1%2!=0)
                                  {
                                      
                                      nf[l1/2]=Repeat1[w][l1].charAt(0);
                                  }
                              }
                              
                              if(c1==1)
                              {
                                  
                              }
                              if(c1==2)
                              {
                                 g=ns[0];
                              for(int l2=1;l2<(sl/2+1);l2++)
                              {
                                  if(nf[l2-1]==43)
                                  {
                                      g=g+ns[l2];
                                  }
                                  if(nf[l2-1]==45)
                                  {
                                      g=g-ns[l2];
                                  }
                              }
                              }
                          }
                          
                            
                          
                        //判断重复
                          int w3=w;
                          for(int w2=0;w2<w3;w2++)
                          {
                              if(Repeat[w].equals(Repeat[w2]))
                              {
                                  flag =1;
                              }
                              else
                              {flag =0;}
                          }
                          //打印
                         if(flag==1)
                          {
                              c6++;
                          }
                          if(flag==0)
                          {
                              if((w+1)%c7==0)
                              {
                                  System.out.println(Repeat[w]+"="+g+"  ");
                              }
                              else
                             {
                                  System.out.print(Repeat[w]+"="+g+"  ");
                             }
                          }
                      }
                 }
                 if(c==3)
                 {
                     break;
                 }
                 
             }
     }
 
 }

本次编程大部分是我的队友在编码,而我由于在一旁看着,所以思路比较清晰。可以提供一些条理性的帮助。

先加上这些限制条件,然后逐个实现。

运行结果截图

原文地址:https://www.cnblogs.com/lzxw/p/6568078.html