• 软件工程个人作业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;
                     }
                     
                 }
         }
     
     }

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

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

    运行结果截图

  • 相关阅读:
    mySql基础
    ECSHOP模糊分词搜索和商品列表关键字飘红功能
    smarty在循环的时候计数来显示这是第几次循环的功能
    PHP Warning: 的解决方法
    ECSHOP生成缩略图模糊
    ECSHOP商品描述和文章里不加水印,只在商品图片和商品相册加水印
    ECSHOP_百度收录网址后面有?from=rss
    在ecshop中添加页面,并且实现后台管理
    windows 2003子目录权限丢失及子目录权限无法继承更改的解决方法
    Newtonsoft.Json初探
  • 原文地址:https://www.cnblogs.com/lzxw/p/6568078.html
Copyright © 2020-2023  润新知