软件工程个人作业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("******************四则运算题目设置***********************"
                    + "\n\n1.二年级\t\t2.三年级\t\t3.四年级\t\t0.退出\n\n请选择四则运算题目难度:   ");
            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("\n答题开始...\n");
                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("\n答题开始...\n");
                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

 

 

三、运行程序结果

二年级题目:

 

三年级题目:

四年级题目:

 

四、未完成的原因

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

 

posted @ 2017-03-09 20:36  夏小暑  阅读(244)  评论(0编辑  收藏  举报