• 软件工程个人作业03


    小组成员:严羽卿、杨茵

    工作照片:

                   

    设计思想:

    1.在进行不加括号的运算时,我们可以通过产生的表达式直接求得正确值,然后跟用户输入的值进行比较;

    2.在进行有括号的运算时,我们可以通过循环求得每一轮循环所得值,并存放入数组中;再通过判断每一次循环后的运算符,来决定数组值之间的加减乘除,以求得最后正确值,然后跟用户输入的值进行比较。

    源程序代码:

     

    import java.util.Scanner;
    import java.util.ArrayList;
    public class Test {
        public static void main(String[] args){
            int N,i,N1,N2;
            int sum=0;
            String str;
            String hh;    
            Scanner in=new Scanner(System.in);    
            change fra=new change();
            System.out.println("请输入需要打印的运算题的数目:");
            N=in.nextInt();
            System.out.println("请选择是否需要分数运算(Y/N):");
            hh=in.next();
            if(hh.equals("Y"))//分数运算
            {
                for(i=0;i<N;i++)
                {            
                    int a,b,c,d;
                    int s1,s2;
                    a=(int) (Math.random()*100);
                    b=(int) (Math.random()*99+1);
                    //分母不等于0
                    c=(int) (Math.random()*100);
                    d=(int) (Math.random()*99+1);
                    int h=(int)(Math.random()*4);
                    int aa=0,bb=0,cc=0,dd=0;
                    //为了产生分数,分子也不可为零
                    if(a==0)
                        a=(int) (Math.random()*99+1);
                    if(c==0)
                        c=(int) (Math.random()*99+1);
                    //化简分数
                    int j;
                    j=fra.change_(a,b);
                    aa=a/j;
                    bb=b/j;
                    //化简分数
                    int p;
                    p=fra.change_(c,d);
                    cc=c/p;
                    dd=d/p;
                    int j1;
                    int s11,s22;
                    String str1;
                    if(h==0)
                    {   
                        //化简后,分母等于1时,直接输出分子
                        if(bb!=1&&dd!=1)
                            System.out.println(aa+"/"+bb+" + "+cc+"/"+dd+"=");
                            
                        else if(bb==1&&dd!=1)
                            System.out.println(aa+" + "+cc+"/"+dd+"=");
                        
                        else if(bb!=1&&dd==1)
                            System.out.println(aa+"/"+bb+" + "+cc+"=");
                            
                        else
                            System.out.println(aa+"+"+cc+"=");
                        //分数加法计算
                          s1=aa*dd+bb*cc;
                          s2=bb*dd;
                          j1=fra.change_(s1,s2);
                          s11=s1/j1;
                          s22=s2/j1;
                          str1=s11+"/"+s22;
                          str=in.next();
                          if(fra.judge_FRA(str1,str)==1)
                          {
                             sum++;
                          }
                          System.out.println("正确"+sum+"道题.");            
                    }
                    else if(h==1)
                    {
                        //不能产生负数
                        int t1,t2;
                        if((a/b-c/d)<0)
                        {
                            t1=aa;
                            aa=cc;
                            cc=t1;
                            t2=bb;
                            bb=dd;
                            dd=t2;
                        }
                        
                        //化简后,分母等于1时,直接输出分子    
                        if(bb!=1&&dd!=1)
                            System.out.println(aa+"/"+bb+" - "+cc+"/"+dd+"=");                        
                        else if(bb==1&&dd!=1)
                            System.out.println(aa+" - "+cc+"/"+dd+"=");
                        else if(bb!=1&&dd==1)
                            System.out.println(aa+"/"+bb+" - "+cc+"=");
                        else
                            System.out.println(aa+"-"+cc+"=");
                        //分数减法计算
                        s1=aa*dd-bb*cc;
                        s2=bb*dd;
                        j1=fra.change_(s1,s2);
                        s11=s1/j1;
                        s22=s2/j1;
                        str1=s11+"/"+s22;
                        str=in.next();
                        if(fra.judge_FRA(str1,str)==1)
                        {
                            sum++;
                        }
                        System.out.println("正确"+sum+"道题.");
                    }
                    else if(h==2)
                    {
                        
                        //化简后,分母等于1时,直接输出分子
                        if(bb!=1&&dd!=1)
                            System.out.println(aa+"/"+bb+" * "+cc+"/"+dd+"=");
    
                        else if(bb==1&&dd!=1)
                            System.out.println(aa+" * "+cc+"/"+dd+"=");
                 
                        else if(bb!=1&&dd==1)
                            System.out.println(aa+"/"+bb+" * "+cc+"=");
                            
                        else
                            System.out.println(aa+"*"+cc+"=");
                        //分数乘法计算
                        s1=aa*cc;
                        s2=bb*dd;
                        j1=fra.change_(s1,s2);
                        s11=s1/j1;
                        s22=s2/j1;
                        str1=s11+"/"+s22;
                        str=in.next();
                        if(fra.judge_FRA(str1,str)==1)
                        {
                            sum++;
                        }
                        System.out.println("正确"+sum+"道题.");
                    }
                    else
                    { 
                        
                        //化简后,分母等于1时,直接输出分子
                        if(bb!=1&&dd!=1)
                            System.out.println("("+aa+"/"+bb+")"+" / "+"("+cc+"/"+dd+")"+"=");
                         
                        else if(bb==1&&dd!=1)
                            System.out.println(aa+" / "+"("+cc+"/"+dd+")"+"=");
                            
                        else if(bb!=1&&dd==1)
                            System.out.println("("+aa+"/"+bb+")"+" / "+cc+"=");
                            
                        else
                            System.out.println(aa+"/"+cc+"=");
                        //分数除法计算
                        s1=aa*dd;
                        s2=bb*cc;
                        j1=fra.change_(s1,s2);
                        s11=s1/j1;
                        s22=s2/j1;
                        str1=s11+"/"+s22;
                        str=in.next();
                        if(fra.judge_FRA(str1,str)==1)
                        {
                            sum++;
                        }
                        System.out.println("正确"+sum+"道题.");
                    }
                }
            }
            else if(hh.equals("N"))//整数运算
            {
                System.out.println("请选择是否需要产生括号的运算题(Y/N):");
                String str1,str2,str3;
                double strr2;
                str=in.next();
                double strr1=0;
                double ss;
                if(str.equals("Y"))
                {
                    System.out.println("请输入数值范围:");
                    N1=in.nextInt();
                    for(i=0;i<N;i++)
                    {
                        ArrayList<Integer> al1=new ArrayList<Integer>();
                        //申请动态数组存放操作数
                        ArrayList<Integer> al2=new ArrayList<Integer>();
                        //申请动态数组存放运算符
                        int m,n,a,b;
                        int j,k;
                        m=(int) (Math.random()*7+3);
                        //限制操作数个数
                        n=m-1;
                        //运算符个数
                        for(j=0;j<m;j++)
                        {
                            a=(int) (Math.random()*(N1-1)+1);
                            al1.add(a);
                        }//将操作数压入al1数组
                        
                        for(k=0;k<n;k++)
                        {
                            b=(int) (Math.random()*4);
                            al2.add(b);
                        }//将运算符压入al2数组
                        if(m==3)//产生的操作数是3个
                        {
                            if((int)al2.get(0)>(int)al2.get(1))//比较优先级
                            {
                                if((int)al2.get(0)==1)
                                {
                                    System.out.print((int)al1.get(0)+"-"+(int)al1.get(1)+"+"+(int)al1.get(2));
                                    strr1=(int)al1.get(0)-(int)al1.get(1)+(int)al1.get(2);
                                }                            
                                else if((int)al2.get(0)==2)
                                {
                                    if((int)al2.get(1)==0)
                                    {
                                        System.out.print((int)al1.get(0)+"*"+"("+(int)al1.get(1)+"+"+(int)al1.get(2)+")");
                                        strr1=(int)al1.get(0)*((int)al1.get(1)+(int)al1.get(2));
                                    }
                                    else if((int)al2.get(1)==1)
                                    {
                                        System.out.print((int)al1.get(0)+"*"+"("+(int)al1.get(1)+"-"+(int)al1.get(2)+")");
                                        strr1=(int)al1.get(0)*((int)al1.get(1)-(int)al1.get(2));
                                    }
                                }
                                else if((int)al2.get(0)==3)
                                {
                                    if((int)al2.get(1)==0)
                                    {
                                        System.out.print((int)al1.get(0)+"/"+"("+(int)al1.get(1)+"+"+(int)al1.get(2)+")");
                                        strr1=(int)al1.get(0)/((int)al1.get(1)+(int)al1.get(2));
                                    }
                                    else if((int)al2.get(1)==1)
                                    {
                                        System.out.print((int)al1.get(0)+"/"+"("+(int)al1.get(1)+"-"+(int)al1.get(2)+")");
                                        strr1=(int)al1.get(0)/((int)al1.get(1)-(int)al1.get(2));
                                    }
                                    if((int)al2.get(1)==2)
                                    {
                                        System.out.print((int)al1.get(0)+"/"+(int)al1.get(1)+"*"+(int)al1.get(2));
                                        strr1=(int)al1.get(0)/(int)al1.get(1)*(int)al1.get(2);
                                    }
                                }
                            }
                            else if((int)al2.get(0)<(int)al2.get(1)||(int)al2.get(0)==(int)al2.get(1))//比较优先级
                            {
                                if((int)al2.get(0)==0)
                                {
                                    if((int)al2.get(1)==0)
                                    {
                                        System.out.print((int)al1.get(0)+"+"+(int)al1.get(1)+"+"+(int)al1.get(2));
                                        strr1=(int)al1.get(0)+(int)al1.get(1)+(int)al1.get(2);
                                    }
                                    else if((int)al2.get(1)==1)
                                    {
                                        System.out.print((int)al1.get(0)+"+"+(int)al1.get(1)+"-"+(int)al1.get(2));
                                        strr1=(int)al1.get(0)+(int)al1.get(1)-(int)al1.get(2);
                                    }
                                    else if((int)al2.get(1)==2)
                                    {
                                        System.out.print((int)al1.get(0)+"+"+(int)al1.get(1)+"*"+(int)al1.get(2));
                                        strr1=(int)al1.get(0)+(int)al1.get(1)*(int)al1.get(2);
                                    }
                                    else if((int)al2.get(1)==3)
                                    {
                                        System.out.print((int)al1.get(0)+"+"+(int)al1.get(1)+"/"+(int)al1.get(2));
                                        strr1=(int)al1.get(0)+(int)al1.get(1)/(int)al1.get(2);
                                    }
                                }
                                else if((int)al2.get(0)==1)
                                {
                                    if((int)al2.get(1)==1)
                                    {
                                        System.out.print((int)al1.get(0)+"-"+(int)al1.get(1)+"-"+(int)al1.get(2));
                                        strr1=(int)al1.get(0)-(int)al1.get(1)-(int)al1.get(2);
                                    }
                                    else if((int)al2.get(1)==2)
                                    {
                                        System.out.print((int)al1.get(0)+"-"+(int)al1.get(1)+"*"+(int)al1.get(2));
                                        strr1=(int)al1.get(0)-(int)al1.get(1)*(int)al1.get(2);
                                    }
                                    else if((int)al2.get(1)==3)
                                    {
                                        System.out.print((int)al1.get(0)+"-"+(int)al1.get(1)+"/"+(int)al1.get(2));
                                        strr1=(int)al1.get(0)-(int)al1.get(1)/(int)al1.get(2);
                                    }
                                }
                                else if((int)al2.get(0)==2)
                                {
                                    if((int)al2.get(1)==2)
                                    {
                                        System.out.print((int)al1.get(0)+"*"+(int)al1.get(1)+"*"+(int)al1.get(2));
                                        strr1=(int)al1.get(0)*(int)al1.get(1)*(int)al1.get(2);
                                    }
                                    else if((int)al2.get(1)==3)
                                    {
                                        System.out.print((int)al1.get(0)+"*"+(int)al1.get(1)+"/"+(int)al1.get(2));
                                        strr1=(int)al1.get(0)*(int)al1.get(1)/(int)al1.get(2);
                                    }
                                }
                                else if((int)al2.get(0)==3)
                                {
                                    System.out.print((int)al1.get(0)+"/"+"("+(int)al1.get(1)+"/"+(int)al1.get(2)+")");
                                    strr1=(int)al1.get(0)/((int)al1.get(1)/(int)al1.get(2));
                                }
                            }
                            System.out.print("=");
                            ss=in.nextDouble();
                            if(fra.judge(strr1,ss)==1)
                            {
                                sum++;
                            }
                            System.out.println("正确"+sum+"道题.");
                        }
                        else if(m>=4)//产生的操作大于等于4个
                        {
                            double sumss=0;
                            int r;
                            int rr=0;
                            int jj;
                            double list[]=new double[7];//存放和
                            double sums[]=new double[4];
                            for(r=0;r<7;r++)
                            {
                                list[r]=0;
                            }
                            for(r=0;r<4;r++)
                            {
                                sums[r]=0;
                            }
                            if(al2.size()%2==0)
                            {
                                jj=al2.size()/2;
                            }
                            else
                                jj=(al2.size()-1)/2;
                            for(j=0;j<=jj;j=j+2)//输出运算表达式
                            {
                                k=j;
                                if((int)al2.get(j+2)==2||(int)al2.get(j+2)==3)
                                {
                                    list[j+1]=1;
                                    sums[rr+1]=1;
                                }
                                 list[jj]=(int)al1.get(al1.size()-1);
                                System.out.print("(");
                                if((int)al2.get(j)>(int)al2.get(j+1))//比较运算符优先级
                                {
                                    if((int)al2.get(j)==1)//第一个出现减法
                                    {
                                        System.out.print((int)al1.get(k)+"-"+(int)al1.get(k+1)+"+"+(int)al1.get(k+2));
                                        list[j]=(int)al1.get(k)-(int)al1.get(k+1)+(int)al1.get(k+2);
                                    }
                                    else if((int)al2.get(j)==2)//第一个出现乘法
                                    {
                                        if((int)al2.get(j+1)==0)
                                        {
                                            System.out.print((int)al1.get(k)+"*"+"("+(int)al1.get(k+1)+"+"+(int)al1.get(k+2)+")");
                                            list[j]=(int)al1.get(k)*+((int)al1.get(k+1)+(int)al1.get(k+2));
                                        }
                                        else if((int)al2.get(j+1)==1)
                                        {
                                            System.out.print((int)al1.get(k)+"*"+"("+(int)al1.get(k+1)+"-"+(int)al1.get(k+2)+")");
                                            list[j]=(int)al1.get(k)*((int)al1.get(k+1)-(int)al1.get(k+2));
                                        }
                                    }
                                    else if((int)al2.get(j)==3)//第一个出现除法
                                    {
                                        if((int)al2.get(j+1)==0)
                                        {
                                            System.out.print((int)al1.get(k)+"/"+"("+(int)al1.get(k+1)+"+"+(int)al1.get(k+2)+")");
                                            list[j]=(int)al1.get(k)/((int)al1.get(k+1)+(int)al1.get(k+2));
                                        }
                                        else if((int)al2.get(j+1)==1)
                                        {
                                            if((int)al1.get(k+1)==(int)al1.get(k+2))
                                            {
                                                System.out.print((int)al1.get(k)+"/"+"("+((int)al1.get(k+1)+1)+"-"+(int)al1.get(k+2)+")");
                                                list[j]=(int)al1.get(k)/(((int)al1.get(k+1)+1)-(int)al1.get(k+2));
                                            }
                                            else 
                                            {
                                                System.out.print((int)al1.get(k)+"/"+"("+(int)al1.get(k+1)+"-"+(int)al1.get(k+2)+")");
                                                list[j]=(int)al1.get(k)/((int)al1.get(k+1)-(int)al1.get(k+2));
                                            }
                                        }
                                        if((int)al2.get(j+1)==2)
                                        {
                                            System.out.print((int)al1.get(k)+"/"+(int)al1.get(k+1)+"*"+(int)al1.get(k+2));
                                            list[j]=(int)al1.get(k)/(int)al1.get(k+1)*(int)al1.get(k+2);
                                        }
                                    }
                                }
                                else if((int)al2.get(j)<(int)al2.get(j+1)||(int)al2.get(j)==(int)al2.get(j+1))
                                {
                                    if((int)al2.get(j)==0)
                                    {
                                        if((int)al2.get(j+1)==0)//第一个出现加法
                                        {
                                            System.out.print((int)al1.get(k)+"+"+(int)al1.get(k+1)+"+"+(int)al1.get(k+2));
                                            list[j]=(int)al1.get(k)+(int)al1.get(k+1)+(int)al1.get(k+2);
                                        }
                                        else if((int)al2.get(j+1)==1)
                                        {
                                            System.out.print((int)al1.get(k)+"+"+(int)al1.get(k+1)+"-"+(int)al1.get(k+2));
                                            list[j]=(int)al1.get(k)+(int)al1.get(k+1)-(int)al1.get(k+2);
                                        }
                                        else if((int)al2.get(j+1)==2)
                                        {
                                            System.out.print((int)al1.get(k)+"+"+(int)al1.get(k+1)+"*"+(int)al1.get(k+2));
                                            list[j]=(int)al1.get(k)+(int)al1.get(k+1)*(int)al1.get(k+2);
                                        }
                                        else if((int)al2.get(j+1)==3)
                                        {
                                            System.out.print((int)al1.get(k)+"+"+(int)al1.get(k+1)+"/"+(int)al1.get(k+2));
                                            list[j]=(int)al1.get(k)+(int)al1.get(k+1)/(int)al1.get(k+2);
                                        }
                                    }
                                    else if((int)al2.get(j)==1)//第一个出现减法
                                    {
                                        if((int)al2.get(j+1)==1)
                                        {
                                            System.out.print((int)al1.get(k)+"-"+(int)al1.get(k+1)+"-"+(int)al1.get(k+2));
                                            list[j]=(int)al1.get(k)-(int)al1.get(k+1)-(int)al1.get(k+2);
                                        }
                                        else if((int)al2.get(j+1)==2)
                                        {
                                            System.out.print((int)al1.get(k)+"-"+(int)al1.get(k+1)+"*"+(int)al1.get(k+2));
                                            list[j]=(int)al1.get(k)-(int)al1.get(k+1)*(int)al1.get(k+2);
                                        }
                                        else if((int)al2.get(j+1)==3)
                                        {
                                            System.out.print((int)al1.get(k)+"-"+(int)al1.get(k+1)+"/"+(int)al1.get(k+2));
                                            list[j]=(int)al1.get(k)-(int)al1.get(k+1)/(int)al1.get(k+2);
                                        }
                                    }
                                    else if((int)al2.get(j)==2)//第一个出现乘法
                                    {
                                        if((int)al2.get(j+1)==2)
                                        {
                                            System.out.print((int)al1.get(k)+"*"+(int)al1.get(k+1)+"*"+(int)al1.get(k+2));
                                            list[j]=(int)al1.get(k)*(int)al1.get(k+1)*(int)al1.get(k+2);
                                        }
                                        else if((int)al2.get(j+1)==3)
                                        {
                                            System.out.print((int)al1.get(k)+"*"+(int)al1.get(k+1)+"/"+(int)al1.get(k+2));
                                            list[j]=(int)al1.get(k)*(int)al1.get(k+1)/(int)al1.get(k+2);
                                        }
                                    }
                                    else if((int)al2.get(j)==3)//第一个出现除法
                                    {
                                        System.out.print((int)al1.get(k)+"/"+"("+(int)al1.get(k+1)+"/"+(int)al1.get(k+2)+")");
                                        list[j]=(int)al1.get(k)/((int)al1.get(k+1)/(int)al1.get(k+2));
                                    }
                                }
                                System.out.print(")");
                                if((int)al2.get(j+2)==0)
                                {
                                    System.out.print("+");
                                    sums[rr]=list[j];
                                    sums[jj]=(int)al1.get(al1.size()-1);
                                }    
                                else if((int)al2.get(j+2)==1)
                                {
                                    System.out.print("-");
                                    sums[rr]=list[j];
                                    sums[jj]=(int)al1.get(al1.size()-1);
                                }
                                else if((int)al2.get(j+2)==2)
                                {
                                    System.out.print("*");
                                    sums[rr]=list[j]*list[j+1];
                                }
                                else if((int)al2.get(j+2)==3)
                                {
                                    System.out.print("/");
                                    sums[rr]=list[j]/list[j+1];
                                }
                                rr++;
                                j++;
                            /*    if((int)al2.get(al1.size()-1)==0||(int)al2.get(al1.size()-1)==1)
                                {
                                    sums[jj]=(int)al1.get(al1.size()-1);
                                }*/
                            }
                            int rrr=1;
                            sumss=sums[0];
                            for(j=0;j<jj;j=j+2)
                            {
                                if((int)al2.get(j+2)==0)
                                {
                                    sumss+=sums[rrr];
                                }
                                else if((int)al2.get(j+2)==1)
                                {
                                    sumss=sumss-sums[rrr];
                                }
                                else if((int)al2.get(j+2)==2)
                                {
                                    sumss=sumss*sums[rrr];
                                }
                                else if((int)al2.get(j+2)==2)
                                {
                                    sumss=sumss/sums[rrr];
                                }
                            }
                            System.out.print((int)al1.get(al1.size()-1));
                            //输出最后一位操作数
                            System.out.print("=");
                            strr1=in.nextDouble();
                            if(fra.judge(sumss,strr1)==1)
                            {
                                sum++;
                            }
                            System.out.println(sumss);
                            System.out.println("正确"+sum+"道题.");            
                        }
                    }
                }
                
                else if(str.equals("N"))//不需要产生括号
                {
                    System.out.println("请输入数值范围:");
                    N2=in.nextInt();
                    System.out.println("请选择是否有无乘除法的运算题(Y/N):");
                    str1=in.next();
                    if(str1.equals("Y"))//有乘除法
                    {                
                        System.out.println("请选择是否有无余数的运算题(Y/N):");
                        str2=in.next();    
                        
                        if(str2.equals("Y"))//需要有余数
                        {
                            System.out.println("请选择是否有负数(Y/N):");
                            str3=in.next();
                            for(i=0;i<N;i++)
                            {
                                int a,b,c,c1,h,h2;
                                a=(int) (Math.random()*N2);
                                b=(int) (Math.random()*N2);
                                h=(int) (Math.random()*4);
                                //控制加减运算符
                                c=(int) (Math.random()*(N2-1)+1);
                                c1=(int) (Math.random()*10+1);
                                //控制倍数
                                
                                if(str3.equals("Y"))//有负数
                                {
                                    if(h==0)//加法
                                    {
                                        h2=(int) (Math.random()*2);
                                        //控制有无负数
                                        if(h2==0)
                                        {
                                            System.out.println(a+"+"+b+"=");
                                            double s;
                                            s=a+b;
                                            strr2=in.nextDouble();
                                            if(fra.judge(s,strr2)==1)
                                            {
                                                sum++;
                                            }
                                            
                                        }
                                        else if(h2==1)
                                        {
                                            System.out.println("-"+a+"+"+b+"=");
                                            double s;
                                            s=-a+b;
                                            strr2=in.nextDouble();
                                            if(fra.judge(s,strr2)==1)
                                            {
                                                sum++;
                                            }
                                            
                                        }
                                    }
                                    if(h==1)//减法
                                    {
                                        h2=(int) (Math.random()*2);
                                        //控制有无负数
                                        if(h2==0)
                                        {
                                            System.out.println(a+"-"+b+"=");
                                            double s;
                                            s=a-b;
                                            strr2=in.nextDouble();
                                            if(fra.judge(s,strr2)==1)
                                            {
                                                sum++;
                                            }
                                        }
                                        else if(h2==1)
                                        {
                                            System.out.println("-"+a+"-"+b+"=");
                                            double s;
                                            s=-a-b;
                                            strr2=in.nextDouble();
                                            if(fra.judge(s,strr2)==1)
                                            {
                                                sum++;
                                            }
                                        }
                                    }
                                }
                                else if(str3.equals("N"))//无负数
                                {
                                    if(h==0)
                                    {
                                        System.out.println(a+"+"+b+"=");
                                        double s;
                                        s=a+b;
                                        strr2=in.nextDouble();
                                        if(fra.judge(s,strr2)==1)
                                        {
                                            sum++;
                                        }
                                        
                                    }
                                    if(h==1)
                                    {
                                        System.out.println(a+"-"+b+"=");
                                        double s;
                                        s=a-b;
                                        strr2=in.nextDouble();
                                        if(fra.judge(s,strr2)==1)
                                        {
                                            sum++;
                                        }
                                        
                                    }
                                }
                                if(h==2)
                                {
                                    System.out.println(a+"*"+b+"=");
                                    double s;
                                    s=a*b;
                                    strr2=in.nextDouble();
                                    if(fra.judge(s,strr2)==1)
                                    {
                                        sum++;
                                    }
                                    
                                }
                                if(h==3)
                                {
                                    int d,k;                    
                                    k=(int) (Math.random()*(c-1)+1);
                                    //必须产生余数
                                    d=c*c1+k;
                                    System.out.println(d+"/"+c+"=");
                                    double s;
                                    s=d/c;
                                    strr2=in.nextDouble();
                                    if(fra.judge(s,strr2)==1)
                                    {
                                        sum++;
                                    }
                                    
                                }
                            }
                        }
                        else if(str2.equals("N"))//不需要产生余数
                        {
                            System.out.println("请选择是否有负数(Y/N):");
                            str3=in.next();
                            for(i=0;i<N;i++)
                            {
                                int a,b,c,c1,h,h2;
                                a=(int) (Math.random()*N2);
                                b=(int) (Math.random()*N2);
                                h=(int) (Math.random()*4);
                                //控制加减运算符
                                c=(int) (Math.random()*(N2-1)+1);
                                c1=(int) (Math.random()*10+1);
                                //控制倍数
                                
                                if(str3.equals("Y"))//有负数
                                {
                                    if(h==0)//加法
                                    {
                                        h2=(int) (Math.random()*2);
                                        //控制有无负数
                                        if(h2==0)
                                        {
                                            System.out.println(a+"+"+b+"=");
                                            double s;
                                            s=a+b;
                                            strr2=in.nextDouble();
                                            if(fra.judge(s,strr2)==1)
                                            {
                                                sum++;
                                            }
                                            
                                        }
                                        else if(h2==1)
                                        {
                                            System.out.println("-"+a+"+"+b+"=");
                                            double s;
                                            s=-a+b;
                                            strr2=in.nextDouble();
                                            if(fra.judge(s,strr2)==1)
                                            {
                                                sum++;
                                            }
                                            
                                        }
                                    }
                                    if(h==1)//减法
                                    {
                                        h2=(int) (Math.random()*2);
                                        //控制有无负数
                                        if(h2==0)
                                        {
                                            System.out.println(a+"-"+b+"=");
                                            double s;
                                            s=a-b;
                                            strr2=in.nextDouble();
                                            if(fra.judge(s,strr2)==1)
                                            {
                                                sum++;
                                            }
                                        }
                                        else if(h2==1)
                                        {
                                            System.out.println("-"+a+"-"+b+"=");
                                            double s;
                                            s=-a-b;
                                            strr2=in.nextDouble();
                                            if(fra.judge(s,strr2)==1)
                                            {
                                                sum++;
                                            }
                                        }
                                    }
                                }
                                else if(str3.equals("N"))//无负数
                                {
                                    if(h==0)
                                    {
                                        System.out.println(a+"+"+b+"=");
                                        double s;
                                        s=a+b;
                                        strr2=in.nextDouble();
                                        if(fra.judge(s,strr2)==1)
                                        {
                                            sum++;
                                        }
                                    }
                                    if(h==1)
                                    {
                                        System.out.println(a+"-"+b+"=");
                                        double s;
                                        s=a-b;
                                        strr2=in.nextDouble();
                                        if(fra.judge(s,strr2)==1)
                                        {
                                            sum++;
                                        }
                                    }
                                }
                                if(h==2)//乘法
                                {
                                    System.out.println(a+"*"+b+"=");
                                    double s;
                                    s=a*b;
                                    strr2=in.nextDouble();
                                    if(fra.judge(s,strr2)==1)
                                    {
                                        sum++;
                                    }
                                }
                                if(h==3)//除法,不产生余数
                                {
                                    int d;            
                                    //不能产生余数
                                    d=c*c1;
                                    System.out.println(d+"/"+c+"=");
                                    double s;
                                    s=d/c;
                                    strr2=in.nextDouble();
                                    if(fra.judge(s,strr2)==1)
                                    {
                                        sum++;
                                    }
                                    
                                }
                            }
                        }
                    }
                            
                    else if(str1.equals("N"))//没有乘除法
                    {
                        int a,b,h,h2;                        
                        System.out.println("请选择是否有负数(Y/N):");
                        str3=in.next();
                        for(i=0;i<N;i++)
                        {
                            a=(int) (Math.random()*N2);
                            b=(int) (Math.random()*N2);
                            h=(int) (Math.random()*2);
                            //控制运算符
                            
                            if(str3.equals("Y"))//有负数
                            {
                                if(h==0)//加法
                                {
                                    h2=(int) (Math.random()*2);
                                    //控制有无负数
                                    if(h2==0)
                                    {
                                        System.out.println(a+"+"+b+"=");
                                        double s;
                                        s=a+b;
                                        strr2=in.nextDouble();
                                        if(fra.judge(s,strr2)==1)
                                        {
                                            sum++;
                                        }
                                    }
                                    else if(h2==1)
                                    {
                                        System.out.println("-"+a+"+"+b+"=");
                                        double s;
                                        s=-a+b;
                                        strr2=in.nextDouble();
                                        if(fra.judge(s,strr2)==1)
                                        {
                                            sum++;
                                        }
                                    }
                                }
                                if(h==1)//减法
                                {
                                    h2=(int) (Math.random()*2);
                                    //控制有无负数
                                    if(h2==0)
                                    {
                                        System.out.println(a+"-"+b+"=");
                                        double s;
                                        s=a-b;
                                        strr2=in.nextDouble();
                                        if(fra.judge(s,strr2)==1)
                                        {
                                            sum++;
                                        }
                                    }
                                    else if(h2==1)
                                    {
                                        System.out.println("-"+a+"-"+b+"=");
                                        double s;
                                        s=-a-b;
                                        strr2=in.nextDouble();
                                        if(fra.judge(s,strr2)==1)
                                        {
                                            sum++;
                                        }
                                    }
                                }
                            }
                            else if(str3.equals("N"))//无负数
                            {
                                if(h==0)
                                {
                                    System.out.println(a+"+"+b+"=");
                                    double s;
                                    s=a+b;
                                    strr2=in.nextDouble();
                                    if(fra.judge(s,strr2)==1)
                                    {
                                        sum++;
                                    }
                                }
                                if(h==1)
                                {
                                    System.out.println(a+"-"+b+"=");
                                    double s;
                                    s=a-b;
                                    strr2=in.nextDouble();
                                    if(fra.judge(s,strr2)==1)
                                    {
                                        sum++;
                                    }
                                }
                            }
                        }
                    }
                }
            }
            in.close();
        }
    }
    class change{
        Scanner in=new Scanner(System.in);
        int change_(int a,int b)//化简分数
        {
          int r1;
          if(a>b)
          {
              r1=b;
          }
          else
              r1=a;
          int k=0;
          for(int j=1;j<=r1;j++)
            {
              if(a%j==0&&b%j==0)
              {
                  k=j;
               }          
            }
            return k;
        }
      int  judge_FRA(String str1,String str)//分数运算判断对错,计算正确次数
      {
          int ju;
          if(str.equals(str1))
          {
              System.out.println("正确");
              ju=1;
          }
          else
          {
              System.out.println("错误");
              ju=0;
          }
          return ju;
      }
      int judge(double s,double ss)//整数判断对错,计算正确次数
      {
          int ju;
          if(s==ss)
          {
              System.out.println("正确");
              ju=1;
          }
          else
          {
              System.out.println("错误");
              ju=0;
          }
          return ju;
      }
    }

     

    结果截图:

    个人总结:

          有括号的情况下,每次循环,最后的和都会被更新,最后求得值总是不正确;然后,我存放在数组里面,再通过判断运算符,将两次和加减乘除;这次任务很繁琐,总是容易出错。

     

                                                                                                         周活动总结表

     

                                                  姓名:杨茵                           日期 2016/3/26

     

    听课

    编写代码

    阅读课本

    准备考试

    讨论

    写报告

    日总计

    周日

     

     

    53

     

     

     

    53

    周一

    100

     

     

     

     

     

    100

    周二

     

     

    39

     

     

     

    39

    周三

     

     

    45

     

    57

     

    102

    周四

     

    160

     

     

     

     

    160

    周五

     

    157

     

     

     

    32

    189

    周六

     

     

    78

     

     

    30

    108

    周总计

    100

    377

    162

     

    57

    62

    751

     

                                                                                                    时间记录日志

     

                                                 学生:杨茵                    日期:2016/3/26

                                                 教师:王建民                    课程:软件工程

    日期

    开始时间

    结束时间

    中断时间

    净时间

    活动

    备注

    C

    U

    3/20

    15:30

    16:30

    7

    53

    读构建之法

    聊天

     

     

    3/21

    8:00

    09:50

    10

    100

    听课

    休息

     

     

    3/22

    15:53

    17:42

    10

    99

    读《构建之法

    》,写阅读笔记

    休息

     

     

    3/23

    15:30

    17:32

    20

    102

    讨论程序,读《构建之法》

    四则运算3,两人小组讨论

    聊天

     

     

    3/24

    1800

    21:15

    35

    160

    编程序

    开始编写四则运算3

    吃饭

     

     

    3/25

    16:30

    18:00

    10

    80

    编程序

    休息

     

     

    3/25

    19:23

    21:30

    18

    109

    编程序,写报告

    聊天

     

     

    3/26

    8:47

    11:00

    25

    108

    最后整理程序

    作业

    读《构建之法》

     

     

     

     

                                                                                                     缺陷记录日志

     

                                                       学生:杨茵

                                                       日期:2016/3/26

                                                       教员:王建民

                                                       程序号:四则运算3

    日期

    编号

    类型

    引入阶段

    排除阶段

    修复时间

    修复缺陷

    3/24

    1

     

    编码

    编译

    5min

     

    描述:先输入答案才输出算式,调换顺序就可以

    3/24

    2

     

    设计

    编译

    30min

     

    描述:括号的产生有歧义

    3/25

    3

     

    编码

    编译

    30min

     

    描述:计算的正确答案经过循环总是更新,不能相加

    3/25

    4

     

    编码

    编译

    10min

     

    描述:Exception in thread “mian”:Index: 7,Size: 7

     

     

  • 相关阅读:
    第三十五篇 os模块、sys模块、json模块、pickle模块
    第三十三篇 包
    <词云图>疾风剑豪-亚索词云图
    <爬虫>常见网址的爬虫整理
    <爬虫>反反爬虫的各种知识
    <爬虫>崔庆才的爬虫课
    <随便写>番茄工作法笔记
    <就业指导>为了找到更好的工作
    <人事面试>人事面试整理
    <面试题>面试题整理(101-200)
  • 原文地址:https://www.cnblogs.com/yyting/p/5321953.html
Copyright © 2020-2023  润新知