zoukankan      html  css  js  c++  java
  • 软件工程个人作业02

    -----------------------------------------------

    题目要求02:

     可以控制一下参数。。
     1.是否有乘除法
     2.是否有括号(最多可以支持10个数参与运算)
     3.取值范围√
     4.加减有无负数√
     5.除法有无余数

    -----------------------------------------------

    目前只实现了3.4两个要求,还存在BUG,还需改进。

    一、程序的设计思想

    在主界面的设计上是按年级分的难度,二年级时,是两位数的四则运算,然后是因为是二年级,还未学习余数,所以是除法只能是整除,具体算法如下:

    int ff=0;
                int x=(int)(Math.random()*M); 
                int shuzu[]=new int[100];//存储因子的数组
                for(int a=1;a<=x;a++){
                    if(x%a==0)//是因子
                    {shuzu[ff]=a;ff++;}//存储到数组里去
                int y=(int)(Math.random()*ff);//随机产生数组的下标
                   suan[i]=x+"/"+shuzu[y]+"=";
                   key[i]=x/shuzu[y];
                }//for

    在随机数产生这块算法如下:

    int s=(int)(Math.random()*8)+2;//2~10个数字
                String out[]=new String[2*s-1];
                output="";
                for(int j=0;j<s;j++){
                    if(j==0)
                    {shu[j]=suiji(M);//生成s个随机数
                    }
                    else{
                        shu[j]=suiji(shu[j-1]);
                    }
                }
                for(int j2=0;j2<s-1;j2++){
                    fu[j2]=suiji(4);
                }
               for(int i2=0;i2<2*s-1;i2++){//输出算式
                  if(i2%2==0){
                      out[i2]=String.valueOf(shu[i2/2]);
                  }
                  else{
                      out[i2]=fuhao[fu[(i2+1)/2]];
                  } 
                  output+=out[i2];
               }

    然后是采用了一种计算字符串中的四则运算的结构:

    static ScriptEngine jse = new ScriptEngineManager().getEngineByName("JavaScript");//用于计算答案
    

    具体运用如下:

     key[i]=(jse.eval(output)).toString();

    在整数运算时,如果出现了小数,可以取整:

      if(IS(key[i])==1){//如果是小数
                 key[i]=QU(key[i]);

    算法如下:

    //小数四舍五入(用于整数运算)
        public static String QU(String s){//s是答案
            double x=Double.parseDouble(s);
            int y=(int) Math.round(x);//四舍五入
            String z=y+"";
            return z;
        }

    二、源程序代码

    import java.util.Scanner;
    
    import javax.script.ScriptEngine;
    import javax.script.ScriptEngineManager;
    import javax.script.ScriptException;
    
    //随机产生四则运算02题目
    //李慧,2017.3.6
    /*要求:01
     1.支持真分数、整数的四则运算 √
     2.题目避免重复√     
     3.可定制数量 √
     要求02:
     可以控制一下参数。。
     1.是否有乘除法
     2.是否有括号(最多可以支持10个数参与运算)
     3.取值范围√
     4.加减有无负数√
     5.除法有无余数
    */
    //刚开始的思想一定要考虑周到,别以至于到后面程序有一点麻烦
    //答案无法变成真分数
    
    public class SZYS {
        
        static ScriptEngine jse = new ScriptEngineManager().getEngineByName("JavaScript");//用于计算答案
        static Scanner scan=new Scanner(System.in);
        static String fuhao[]=new String[4];
     
        public static void main(String[] args) throws ScriptException {
            // TODO Auto-generated method stub
            fuhao[0]="+";
            fuhao[1]="-";
            fuhao[2]="*";
            fuhao[3]="/";
            int M=0,N1=0;//题的难度
            int cuo1,cuo2,cuo=0;
            int x=0;
            while(x==0){
                System.out.print("******************四则运算题目设置***********************"
                        + "
    
    1.二年级		2.三年级		3.四年级		0.退出
    
    请选择四则运算题目难度:   ");
                int chengdu=scan.nextInt();
                if(chengdu==1)
                    {M=100;}
                else if(chengdu==2)
                    {M=1000;N1=100;}
                else if(chengdu==3)
                {M=1000;N1=100;}
                if(chengdu==0) {System.out.println("...退出答题!");
                System.out.println("*******************************************************");
                break;}
                else if(chengdu==1 || chengdu==2){
                    System.out.print("整数的四则运算题目数量:");
                    int N=scan.nextInt();//定题量
                    System.out.println("*******************************************************");
                    System.out.println("
    答题开始...
    ");
                    switch(chengdu){
                    case 1:
                        cuo1=Two(M,N);
                        System.out.println();
                        System.out.println("共错了"+cuo1+"道题,继续努力!");
                        break;
                    case 2:
                        cuo1=Three(M,N);
                        System.out.println();
                        System.out.println("共错了"+cuo1+"道题,继续努力!");
                        break;
                    default:System.out.println("输入有误!请重新输入!");break;
                    }//switch
                }
                else if(chengdu==3){
                    System.out.print("整数的四则运算题目数量:");
                    int N=scan.nextInt();
                    System.out.print("真分数的四则运算题目数量:");
                    int n=scan.nextInt();//定题量
                    System.out.println("*******************************************************");
                    System.out.println("
    答题开始...
    ");
                    switch(chengdu){
                    case 3:
                        cuo1=Four(M,N);
                        System.out.println();
                        cuo2=FourZ(N1,n);
                        cuo=cuo1+cuo2;
                        System.out.println("共错了"+cuo+"道题,继续努力!");
                        break;
                    default:System.out.println("输入有误!请重新输入!");break;
                    }//switch
                    }//else if
                else{
                    System.out.println("输入格式有误!请输入(0或1或2或3)");
                }
            }//while
    }//main
        
        public static int Two(int M,int N) throws ScriptException{
            int dui=0;//做对的题目
            String zuocuo="";//做错的题目
            String suan[]=new String[N];//算式
            int key[]=new int[N];//答案
            String K[]=new String[N];
            System.out.println();
            System.out.println("一、整数的四则运算。");
            for(int i=0;i<N;i++){
             int z=(int) (Math.random()*4);
             if(z==3){//z==3
                int ff=0;
                int x=(int)(Math.random()*M); 
                int shuzu[]=new int[100];//存储因子的数组
                for(int a=1;a<=x;a++){
                    if(x%a==0)//是因子
                    {shuzu[ff]=a;ff++;}//存储到数组里去
                int y=(int)(Math.random()*ff);//随机产生数组的下标
                   suan[i]=x+"/"+shuzu[y]+"=";
                   key[i]=x/shuzu[y];
                }//for
             }//if
            else{
               int x=(int)(Math.random()*M); 
               int y=(int)(Math.random()*M);
               suan[i]=x+fuhao[z]+y+"=";
                  if(z==0){key[i]=x+y;}
                  if(z==1){key[i]=x-y;
                  if(key[i]<0) {
                      suan[i]=y+fuhao[z]+x+"=";
                      key[i]=y-x;
                  }
                      }
                  if(z==2) {key[i]=x*y;}
            }//if z!=3
    
          }//for
            
            
            //避免重复
            for(int j=0;j<N;j++){
                for(int k=j+1;k<N-1;k++){
                    int F=isF(suan[j]);
                    int FF=isF(suan[k]);
                    
                    if(F==FF)
                    {    
                        int we=panduan(suan[j]);int l=suan[j].length();
                        int h=panduan(suan[k]);int ll=suan[k].length();
                        /*
                        //用于验证
                        System.out.println(suan[j]+"的符号位置:"+we+",a:"+suan[j].substring(0,we-1)+",b:"+suan[j].substring(we+2,l-1));
                        System.out.println(suan[k]+"的符号位置:"+h+",a2:"+suan[k].substring(0,h-1)+",b2:"+suan[k].substring(h+2,ll-1));
                        */
                        if(((suan[j].substring(0,we-1)).equals(suan[k].substring(0, h-1))&&
                                (suan[j].substring(we+2,l-1)).equals(suan[k].substring(h+2,ll-1)))||
                                ((suan[j].substring(0,we-1)).equals(suan[k].substring(h+2, ll-1))&&
                                        (suan[j].substring(we+2,l-1)).equals(suan[k].substring(0, h-1))))
                        {
                            int x2=(int)(Math.random()*M); 
                            int y2=(int)(Math.random()*M);
                            int z2=(int)(Math.random()*4);
                            if(z2!=3){
                            suan[k]=x2+fuhao[z2]+y2+"=";
                            if(z2==0){key[k]=x2+y2;}
                              else if(z2==1){
                                  key[k]=x2-y2;
                                   if(key[k]<0) {
                                      suan[k]=y2+fuhao[k]+x2+"=";
                                      key[k]=y2-x2;
                                  }
                                  }
                            else if(z2==2) {key[k]=x2*y2;}
                            }//if z2!=3
                 else{
                     int ff=0;
                    int xz2=(int)(Math.random()*M);
                    int shuzu2[]=new int[10];//存储因子的数组
                    for(int a=1;a<xz2;a++){
                        if(xz2%a==0)//是因子
                            {shuzu2[ff]=a;ff++;}//存储到数组里去
                    int yz2=(int)(Math.random()*ff);//随机产生数组的下标
                    suan[k]=xz2+"/"+shuzu2[yz2]+"=";
                    key[k]=xz2/shuzu2[yz2];
                    }
                     }//else
                        }//if2
                }//if1
            }
            }//for
            
            for(int m=0;m<N;m++){
                System.out.print(m+1+".  "+suan[m]);
                K[m]=scan.next();
                if(yanzheng(K[m],key[m])==1){
                    System.out.println("Bingo!");
                    dui++;
                }
                else{
                    System.out.println("Wrong! THE KEY:"+key[m]);
                    zuocuo+=" "+(m+1);
                }
                System.out.println();
            }
            System.out.println("做对了"+dui+"道题,做错了"+(N-dui)+"道题,题号"+zuocuo+"的答案错误。");
            
            
                return (N-dui);  
        }
        /*
        public static int TwoZ(int N1,int n){
            int dui2=0;//做对的题目
            String zuocuo2="";//做错的题目
            String suan2[]=new String[n];//算式
            String key2[]=new String[n];//答案
            String K2[]=new String[n];
            System.out.println();
            System.out.println("二、真分数的四则运算。");
            for(int i=0;i<n;i++){
                int x0=(int) ((Math.random()*N1)+2);
                int xx=(int) ((Math.random()*(x0-1))+1);
                int a=gongyue(x0,xx);
                int y0=(int)(Math.random()*N1)+2;
                int yy=(int)(Math.random()*(y0-1)+1);
                int b=gongyue(y0,yy);
                int zz=(int)(Math.random()*4);
                
                int p=x0/a;
                int q=xx/a;
                int o=y0/b;
                int w=yy/b;
                
                String output=q+"/"+p+" "+fuhao[zz]+" "+w+"/"+o+" =";
                suan2[i]=output;
                
                if(zz==0){
                    int KK1=p*o;int KK2=q*o+w*p;
                    int G=gongyue(KK1,KK2);
                    int K1=KK1/G; int KK22=KK2/G;
                    key2[i]=KK22+"/"+K1;
                }
                 else if(zz==1){
                     int KK1=p*o;int KK2=q*o-w*p;
                    int G=gongyue(KK1,KK2);
                    int K1=KK1/G; int KK22=KK2/G;
                    key2[i]=KK22+"/"+K1;
                    if(KK22<0 || K1<0){
                        KK22=w*p-q*o;
                        key2[i]=KK22+"/"+K1;
                        suan2[i]=w+"/"+o+" "+fuhao[zz]+" "+q+"/"+p+" =";
                    }
                    }
                 else if(zz==2) {
                     int KK1=p*o;int KK2=q*w;
                    int G=gongyue(KK1,KK2);
                    int K1=KK1/G; int KK22=KK2/G;
                    key2[i]=KK22+"/"+K1;
                     }
                 else{int KK1=p*w;int KK2=q*o;
                int G=gongyue(KK1,KK2);
                int K1=KK1/G; int KK22=KK2/G;
                key2[i]=KK22+"/"+K1;}
                }//for
            
            //避免重复
            for(int j=0;j<n;j++){
                for(int k=j+1;k<n-1;k++){
                    int F=isF(suan2[j]);
                    int FF=isF(suan2[k]);
                    
                 if(F==FF)
                    {
                        int we=panduan2(suan2[j]);int l=suan2[j].length();
                        int h=panduan2(suan2[k]);int ll=suan2[k].length();
                    
                      //用于验证
                        System.out.println(suan2[j]+"的符号位置:"+we+",a:"+suan2[j].substring(0,we-1)+",b:"+suan2[j].substring(we+2,l-1));
                        System.out.println(suan2[k]+"的符号位置:"+h+",a2:"+suan2[k].substring(0,h-1)+",b2:"+suan2[k].substring(h+2,ll-1));
                    
                        if(((suan2[j].substring(0,we-1)).equals(suan2[k].substring(0, h-1))&&
                                (suan2[j].substring(we+2,l-1)).equals(suan2[k].substring(h+2,ll-1)))||
                                ((suan2[j].substring(0,we-1)).equals(suan2[k].substring(h+2, ll-1))&&
                                        (suan2[j].substring(we+2,l-1)).equals(suan2[k].substring(0, h-1))))
                        {    
                        int x0=(int) ((Math.random()*N1)+2);
                        int xx=(int) ((Math.random()*(x0-1))+1);
                        int a=gongyue(x0,xx);
                        int y0=(int)(Math.random()*N1)+2;
                        int yy=(int)(Math.random()*(y0-1)+1);
                        int b=gongyue(y0,yy);
                        int zz=(int)(Math.random()*4);
                        
                        int p=x0/a;
                        int q=xx/a;
                        int o=y0/b;
                        int w=yy/b;
                        
                        String output=q+"/"+p+" "+fuhao[zz]+" "+w+"/"+o+" =";
                        suan2[k]=output;
                        
                        if(zz==0){
                            int KK1=p*o;int KK2=q*o+w*p;
                            int G=gongyue(KK1,KK2);
                            int K1=KK1/G; int KK22=KK2/G;
                            key2[k]=KK22+"/"+K1;
                        }
                         else if(zz==1){
                             int KK1=p*o;int KK2=q*o-w*p;
                            int G=gongyue(KK1,KK2);
                            int K1=KK1/G; int KK22=KK2/G;
                            key2[k]=KK22+"/"+K1;
                            }
                         else if(zz==2) {
                             int KK1=p*o;int KK2=q*w;
                            int G=gongyue(KK1,KK2);
                            int K1=KK1/G; int KK22=KK2/G;
                            key2[k]=KK22+"/"+K1;
                             }
                         else{
                             int KK1=p*w;int KK2=q*o;
                        int G=gongyue(KK1,KK2);
                        int K1=KK1/G; int KK22=KK2/G;
                        if(K1==KK22){key2[k]="1";}
                        else{key2[k]=KK22+"/"+K1;}//else
                            }//else
                        }//if    
                }//if
            }//for
        }//for
            
            for(int m=0;m<n;m++){
                System.out.print(m+1+".  "+suan2[m]);
                K2[m]=scan.next();
                if(key2[m].equals("1/1")) key2[m]="1";
                if(K2[m].equals(key2[m])){
                    System.out.println("Bingo!");
                    dui2++;
                }
                else{
                    System.out.println("Wrong! THE KEY:"+key2[m]);
                    zuocuo2+=" "+(m+1);
                }
            System.out.println();
                }//for
            System.out.println("做对了"+dui2+"道题,做错了"+(n-dui2)+"道题,题号"+zuocuo2+"的答案错误。");
                return (n-dui2);
        }
        */
        public static int Three(int M,int N) throws ScriptException{
            int dui=0;//做对的题目
            String zuocuo="";//做错的题目
            String suan[]=new String[N];//算式
            String output;
            String yu="";
            String shang="";
            String key[]=new String[N];//答案
            int shu[]=new int[M];//一个式子中产生的数字的个数
            int fu[]=new int[shu.length-1];//一个式子中产生符号的个数(首先用符号表示)
            String K[]=new String[N];
            System.out.println("一、整数的四则运算。(可四舍五入)");
            for(int i=0;i<N;i++){
                int s=(int)(Math.random()*8)+2;//2~10个数字
                String out[]=new String[2*s-1];
                output="";
                for(int j=0;j<s;j++){
                    if(j==0)
                    {shu[j]=suiji(M);//生成s个随机数
                    }
                    else{
                        shu[j]=suiji(shu[j-1]);
                    }
                }
                for(int j2=0;j2<s-1;j2++){
                    fu[j2]=suiji(4);
                }
               for(int i2=0;i2<2*s-1;i2++){//输出算式
                  if(i2%2==0){
                      out[i2]=String.valueOf(shu[i2/2]);
                  }
                  else{
                      out[i2]=fuhao[fu[(i2+1)/2]];
                  } 
                  output+=out[i2];
               }
              key[i]=(jse.eval(output)).toString();
              if(IS(key[i])==1){//如果是小数
                 key[i]=QU(key[i]);
              }//if
               suan[i]=output+"=";
            }//for
            
            //避免重复
            for(int j=0;j<N;j++){
                for(int k=j+1;k<N-1;k++){
                    if(suan[j].equals(suan[k])){
                        int s=(int)(Math.random()*3)+2;//2~5个数字
                        String out[]=new String[2*s-1];
                        output="";
                        for(int j2=0;j2<s;j2++){
                            if(j2==0)
                            {shu[j2]=suiji(M);//生成s个随机数
                            }
                            else{
                                shu[j2]=suiji(shu[j2-1]);
                            }
                        }
                        for(int j2=0;j2<s-1;j2++){
                            fu[j2]=suiji(4);
                        }
                       for(int i2=0;i2<2*s-1;i2++){//输出算式
                          if(i2%2==0){
                              out[i2]=String.valueOf(shu[i2/2]);
                          }
                          else{
                              out[i2]=fuhao[fu[(i2+1)/2]];
                          } 
                          output+=out[i2];
                       }
                      key[k]=(jse.eval(output)).toString();
                      if(IS(key[k])==1){//如果是小数
                             key[k]=QU(key[k]);
                          }//if
                           suan[k]=output+"=";
                    }
                }
            }
            
            for(int i=0;i<N;i++){
                System.out.print(i+1+".  "+suan[i]);
                K[i]=scan.next();
                if(K[i].equals(key[i])){
                    System.out.println("Bingo!");
                    dui++;
                }
                else{
                    System.out.println("Wrong! THE KEY:"+key[i]);
                    zuocuo+=" "+(i+1);
                }
                System.out.println();
            }
            System.out.println("做对了"+dui+"道题,做错了"+(N-dui)+"道题,题号"+zuocuo+"的答案错误。");
            return (N-dui);
        }
    
        public static int Four(int M,int N) throws ScriptException{
            int dui=0;//做对的题目
            String zuocuo="";//做错的题目
            String suan[]=new String[N];//算式
            String output;
            String shang="";
            String key[]=new String[N];//答案
            int shu[]=new int[M];//一个式子中产生的数字的个数
            int fu[]=new int[shu.length-1];//一个式子中产生符号的个数(首先用符号表示)
            String K[]=new String[N];
            System.out.println("一、整数的四则运算。(答案四舍五入)");
            for(int i=0;i<N;i++){
                int s=(int)(Math.random()*3)+2;//2~5个数字
                String out[]=new String[2*s-1];
                output="";
                for(int j=0;j<s;j++){
                    shu[j]=suiji(M);//生成s个随机数
                }
                for(int j2=0;j2<s-1;j2++){
                    fu[j2]=suiji(4);
                }
               for(int i2=0;i2<2*s-1;i2++){//输出算式
                  if(i2%2==0){
                      out[i2]=String.valueOf(shu[i2/2]);
                  }
                  else{
                      out[i2]=fuhao[fu[(i2+1)/2]];
                  } 
                  output+=out[i2];
               }
              key[i]=(jse.eval(output)).toString();
              if(IS(key[i])==1){//如果是小数
                     key[i]=QU(key[i]);
                  }//if
                   suan[i]=output+"=";
            }//for
            
            //避免重复
                    for(int j=0;j<N;j++){
                        for(int k=j+1;k<N-1;k++){
                            if(suan[j].equals(suan[k])){
                                int s=(int)(Math.random()*3)+2;//2~5个数字
                                String out[]=new String[2*s-1];
                                output="";
                                for(int j2=0;j2<s;j++){
                                    shu[j2]=suiji(M);//生成s个随机数
                                }
                                for(int j2=0;j2<s-1;j2++){
                                    fu[j2]=suiji(4);
                                }
                               for(int i2=0;i2<2*s-1;i2++){//输出算式
                                  if(i2%2==0){
                                      out[i2]=String.valueOf(shu[i2/2]);
                                  }
                                  else{
                                      out[i2]=fuhao[fu[(i2+1)/2]];
                                  } 
                                  output+=out[i2];
                               }
                              key[k]=(jse.eval(output)).toString();
                              if(IS(key[k])==1){//如果是小数
                                     key[k]=QU(key[k]);
                                  }//if
                                   suan[k]=output+"=";
                            }
                        }
                    }
            
            for(int i=0;i<N;i++){
                System.out.print(i+1+".  "+suan[i]);
                K[i]=scan.next();
                if(K[i].equals(key[i])){
                    System.out.println("Bingo!");
                    dui++;
                }
                else{
                    System.out.println("Wrong! THE KEY:"+key[i]);
                    zuocuo+=" "+(i+1);
                }
                System.out.println();
            }
            System.out.println("做对了"+dui+"道题,做错了"+(N-dui)+"道题,题号"+zuocuo+"的答案错误。");
            return (N-dui);
        }
        public static int FourZ(int N1,int n) throws ScriptException{
            int dui2=0;//做对的题目
            String zuocuo2="";//做错的题目
            String suan2[]=new String[n];//算式
            String key2[]=new String[n];//答案
            String K2[]=new String[n];//屏幕上输入的题目
            String output="";
            String shu[]=new String[N1];//一个式子中产生的真分数的个数
            int fu[]=new int[shu.length-1];//一个式子中产生符号的个数(首先用符号表示)
            System.out.println();
            System.out.println("二、真分数的四则运算。");
            for(int i=0;i<n;i++){
                int s=(int)(Math.random()*3)+2;//2~5个数字
                String out[]=new String[2*s-1];
                output="";
                for(int j=0;j<s;j++){
                    if(j==0)
                    {shu[j]=suijiZ(N1);//生成s个随机数
                    }
                    else{
                        shu[j]=suijiZ(N1-1);
                    }
                }
                for(int j2=0;j2<s-1;j2++){
                    fu[j2]=suiji(4);
                }
               for(int i2=0;i2<2*s-1;i2++){//输出算式
                  if(i2%2==0){
                      out[i2]=String.valueOf(shu[i2/2]);
                  }
                  else{
                      out[i2]=fuhao[fu[(i2+1)/2]];
                  } 
                  output+=out[i2];
               }
              key2[i]=(jse.eval(output)).toString();
               suan2[i]=output+"=";
            }//for
            
            //避免重复
            for(int j=0;j<n;j++){
                for(int k=j+1;k<n-1;k++){
                    if(suan2[j].equals(suan2[k])){
                        int s=(int)(Math.random()*3)+2;//2~5个数字
                        String out[]=new String[2*s-1];
                        output="";
                        for(int j2=0;j2<s;j2++){
                            if(j==0)
                            {shu[j]=suijiZ(N1);//生成s个随机数
                            }
                            else{
                                shu[j]=suijiZ(N1-1);
                            }
                        }
                        for(int j2=0;j2<s-1;j2++){
                            fu[j2]=suiji(4);
                        }
                       for(int i2=0;i2<2*s-1;i2++){//输出算式
                          if(i2%2==0){
                              out[i2]=String.valueOf(shu[i2/2]);
                          }
                          else{
                              out[i2]=fuhao[fu[(i2+1)/2]];
                          } 
                          output+=out[i2];
                       }
                      key2[k]=(jse.eval(output)).toString();
                       suan2[k]=output+"=";
                    }
                }
            }
            for(int m=0;m<n;m++){
                System.out.print(m+1+".  "+suan2[m]);
                K2[m]=scan.next();
                if(key2[m].equals("1/1")) key2[m]="1";
                if(K2[m].equals(key2[m])){
                    System.out.println("Bingo!");
                    dui2++;
                }
                else{
                    System.out.println("Wrong! THE KEY:"+key2[m]);
                    zuocuo2+=" "+(m+1);
                }
            System.out.println();
                }//for
            System.out.println("做对了"+dui2+"道题,做错了"+(n-dui2)+"道题,题号"+zuocuo2+"的答案错误。");
            
            
            return (n-dui2);
        }
        
        /*//小数取余
        public static String YU(String s){
            System.out.println(s);
            int index=0;//小数中小数点的位置
            
            //找到小数中小数点的位置
            for(int i=0;i<s.length();i++){
                if(s.charAt(i)=='.'){
                    index=i;
                }
            }//for
            System.out.println(index);
            //转化为余数
            int mu=10*index;
            double zi=Double.parseDouble(s);
            int zii=(int)zi*10*(s.length()-index);
            int gongyue=gongyue(mu,zii);
            int fenmu=mu/gongyue;
            int fenzi=zii/gongyue;
            String z=fenzi/fenmu+"";
            return z;
        }*/
        //小数四舍五入(用于整数运算)
        public static String QU(String s){//s是答案
            double x=Double.parseDouble(s);
            int y=(int) Math.round(x);//四舍五入
            String z=y+"";
            return z;
        }
        //判断计算出来的答案是否是小数
        public static int IS(String s){
            int bool=1;
            for(int i=0;i<s.length();i++){
                if(s.charAt(i)=='.'){
                    bool=1;//是小数
                    break;
                }
                else{
                    bool=0;//不是小数
                }
            }
            return bool;
        }
        //随机数的产生
        public static int suiji(int M){//M是随机数产生的范围,即0~M
            int suiji=0;
            suiji=(int)(Math.random()*M); 
            return suiji;
        }
        //真分数中随机数的产生
        public static int suiji2(int a,int b){
            int suiji=0;
            suiji=(int)(Math.random()*a)+b;
            return suiji;
        }
        //产生随机的真分数
        public static String suijiZ(int N1){
            String suiji="";
            int x0=suiji2(N1,2);
            int xx=suiji2(x0-1,1);
            int A=gongyue(x0,xx);
            
            int p=x0/A;
            int q=xx/A;
            suiji=q+"/"+p;
            return suiji;
        }
        //判断是哪种符号
        public static int isF(String s){
            int x=-1;
            for(int i=0;i<s.length();i++){
                if(s.charAt(i)=='+'){x=0;}
                if(s.charAt(i)=='-'){x=1;}
                if(s.charAt(i)=='*'){x=2;}
                if(s.charAt(i)=='/'){x=3;}
            }//for
            if(x==-1){System.out.println("出现错误!,没有符号!");}
            return x;
        }
        //分数的判断
        public static int panduan2(String ss){
            int x=0;int y=0;
            for(int i=0;i<ss.length();i++){
                if(ss.charAt(i)=='+' ||ss.charAt(i)=='-' || ss.charAt(i)=='*' || ss.charAt(i)=='/'){
                        y++;
                   if(y==2){x=i;break;}
                }
            }//for
            return x;
        }
        //判断符号的位置(下标)
        public static int panduan(String ss){
            int x=0;
            for(int i=0;i<ss.length();i++){
                if(ss.charAt(i)=='+' ||ss.charAt(i)=='-' || ss.charAt(i)=='*' || ss.charAt(i)=='/'){
                    x=i;
                }
            }
            return x;
        }
        //化简
        public static int gongyue(int x,int y){
            int gongyue=1;
            int min=Math.min(x, y);
            for(int i=min;i>0;i--){
                if((x%i==0) && (y%i==0))
                {
                    gongyue=i;
                   break;
                }
            }//for
            return gongyue;    
        }
        //判断输入的与答案是否相等
        public static int yanzheng(String x,int k){
            int m=0;
            String n=k+"";
            if(x.equals(n)){
                m=1;//1为相等
            }
            else
                m=0;
            return m;
        }
    }//end
    

    三、运行程序结果

    二年级题目:

    三年级题目:

    四年级题目:

    四、未完成的原因

    有的还没想清楚,最近又去应聘了家教,有点忙了。去小括号如何加,还有真分数的结果是真分数,这个只能两个数来实现,多个数还未实现。两个整数的四则运算要不然是整除要不然是答案有余数,还得分年级出现,这些功能都还未实现。还需继续...

  • 相关阅读:
    今天学到的新知识自己的电脑可以像Github Pages、码云 Pages一样发布静态资源
    移动端安卓开发学习记录Android Studio打断点调试操作步骤记录
    图文并茂学习记录从零开始进行微信小程序开发+引入Vant Weapp组件
    代码小DEMO随笔JS原生手机版本alert弹框
    移动端安卓开发学习记录Android Studio使用adb链接夜神模拟器常用指令
    图文并茂的学习笔记微信小程序自定义tabbar
    解决微信小程序 自定义tabBar 切换时候闪烁问题
    App扫码登录
    TypeScript 参数简化实战(进阶知识点conditional types) 广东靓仔
    前端进阶指南(优秀文章) 广东靓仔
  • 原文地址:https://www.cnblogs.com/xiaxiaoshu/p/6527659.html
Copyright © 2011-2022 走看看