你的位置:首页 > 软件开发 > Java > 一个简单的加减乘除自动生成小程序升级版(JAVA)

一个简单的加减乘除自动生成小程序升级版(JAVA)

发布时间:2015-03-28 09:01:47
1 import java.util.Scanner; 2 public class Suan { 3 public static void main(String[] args) { 4 int []b;//设置数组来存放随机产生数 5 b=new in ...

一个简单的加减乘除自动生成小程序升级版(JAVA)

 1 import java.util.Scanner; 2 public class Suan { 3   public static void main(String[] args) {   4     int []b;//设置数组来存放随机产生数 5     b=new int [4]; 6     Scanner in=new Scanner(System.in); 7     System.out.println("请选择你想练习的题型:"); 8     System.out.println(" 1、分数的加减乘数法练习!"); 9     System.out.println(" 2、整数的加减乘数法练习!"); 10     int xuanze=in.nextInt(); 11     System.out.println("你想输出四则运算的个数是:"); 12     int num=in.nextInt(); 13     String []a={"+","-","*","/"};//整数运算存放符号的数组 14     String res,res1 = null, sum1=null;//res为你输入的答案,res1为分数运算和整数运算除法中的正确答案 15     int []c;//符号的代数 16     int j=0,sum2=0;//sum2为整数运算中加减除的用户输入答案 17     int rshu = 0;//用户计算正确数 18     c=new int [4]; 19     if(1==xuanze)//选择应该输出怎样类型的算式 20     { 21     for(int i=0;i<4;i++)//产生符号的代数 22     { 23       c[i]=(int)(Math.random()*14/3);   24     } 25     for( j=0;j<num;j++)//不够num个数就继续输出算式 26     { 27     for(int i=0;i<4;i++)//产生1到10的随机数 28     { 29       b[i]=(int)( Math.random()*10);       30     }   31      32     if(b[0]>b[1]&&b[2]>b[3]&&b[0]!=0&&b[1]!=0&&b[2]!=0&&b[3]!=0)//真分数的前提 33       { 34        System.out.println("("+b[1]+"/"+b[0]+")"+ a[c[0]]+"("+  b[3]+"/"+b[2]+")"); 35        System.out.print("你的答案是:"); 36        res=in.next(); 37        switch(c[0]){//调用成员方法计算 38           case 0:res1=fracAdd(b[1],b[0],b[3],b[2]);break; 39           case 1:res1=fracSub(b[1],b[0],b[3],b[2]);break; 40           case 2:res1=fracMul(b[1],b[0],b[3],b[2]);break; 41           case 3:res1=fractDiv(b[1],b[0],b[3],b[2]);break; 42              } 43        if(!res.equals(res1))//比较答案 44        { 45          System.out.println("你的答案错误!正确答案为:"+res1);    46        } 47        else  48        { 49          rshu++;//用户计算正确数 50        } 51       } 52     else 53       j--; 54     } 55     } 56     if (2==xuanze)//选择整型数算式 57     { 58        59       for( int r=0;r<num;r++)//不够num个数就继续输出算式 60       { 61         int sum = -1;//真正的结果 62       for(int i=0;i<4;i++) 63       { 64         b[i]=(int)( Math.random()*100);       65       }     66       for(int i=0;i<4;i++) 67       { 68         c[i]=(int)(Math.random()*14/3);   69       }   70       switch(c[0])//判断应该用什么符号 71       { 72       case 0 : 73       case 1 :sum=b[0]+b[1];break; 74       case 2 :sum=b[0]-b[1];break; 75       case 3 :sum=b[0]*b[1];break; 76       case 4 : sum1=fractDiv2(b[0],b[1]);break;//除号时调用函数,结果显示分数 77       } 78         /*if(sum<0)//减法计算结果不能为0 79         { 80           j--; 81         }*/ 82         if(c[0]==4)//如果符号是除号时 83         { 84           System.out.println(b[0]+a[c[0]-1]+b[1]+"="); 85           System.out.print("你的答案是:"); 86            res=in.next(); 87            if(!res.equals(sum1)) 88              { 89                System.out.println("你的答案错误!正确答案为:"+sum1);    90              } 91            else 92              rshu++; 93         } 94         else//如果符号不是除号时 95         { 96           System.out.println(b[0]+a[c[0]-1]+b[1]+"="); 97           System.out.print("你的答案是:"); 98           sum2=in.nextInt(); 99           if(sum2!=sum)100            {101              System.out.println("你的答案错误!正确答案为:"+sum);   102            }103          else104            rshu++;105           //System.out.println(sum);106         }107         System.out.println(r);108         109       }110     }111     else112     {}113     System.out.println("你一共答对了"+rshu+"道题");114 115   }116   static String fracAdd(int first_numerator,int first_denominator,int second_numrator,int second_denominator){ 117     //分数加法118     //需要调用求最大公约数的函数 119     120     int denominator; //分子121     int numerator; //分母122      123     if(first_denominator==second_denominator) //分母相同时加分子    124     {    125       denominator=first_denominator;    126       numerator=first_numerator+second_numrator;    127     }    128     else //否则同分比较分子    129     {    130       denominator=first_denominator*second_denominator;    131       numerator=first_numerator*second_denominator+first_denominator*second_numrator;    132     }   133     int gcd = gcd(numerator,denominator); //调用gcd方法约分134     denominator = denominator / gcd; 135     numerator = numerator / gcd;    136     if(0==denominator/numerator)137     {138       String res="0";139       return res;140     }141     else142     {143     String zi1=String.valueOf(numerator);//把结果转换成字符串输出144     String zi2=String.valueOf(denominator);//把结果转换成字符串输出145     String zi3="/";//把结果转换成字符串输出146     String res2=zi1+zi3+zi2;//把结果转换成字符串输出 147     148     return res2; }   149  150   } 151   static String fracSub(int first_numerator,int first_denominator,int second_numrator,int second_denominator){ 152        153       //需要调用求最大公约数的函数 154        155       int denominator; 156       int numerator; 157        158       if(first_denominator==second_denominator) //分母相同时加分子    159       {    160         denominator=first_denominator;    161         numerator=first_numerator-second_numrator;    162       }    163       else //否则同分比较分子    164       {    165         denominator=first_denominator*second_denominator;    166         numerator=first_numerator*second_denominator-first_denominator*second_numrator;    167       }   168       int gcd = gcd(numerator,denominator); 169       denominator = denominator / gcd; 170       numerator = numerator / gcd;  171       if(0==denominator/numerator)172       {173         String res="0";174         return res;175       }176       else177       {178       String zi1=String.valueOf(numerator);179       String zi2=String.valueOf(denominator);180       String zi3="/";181       String res2=zi1+zi3+zi2; 182       return res2;  }   183    184     } 185     static String fracMul(int first_numerator,int first_denominator,int second_numerator,int second_denominator){ 186        187       //需要调用求最大公约数的函数   188       int denominator; 189       int numerator; 190        191       192         denominator=first_denominator*second_denominator;    193         numerator=first_numerator*second_numerator;  194         195       int gcd = gcd(numerator,denominator); 196       denominator = denominator / gcd; 197       numerator = numerator / gcd; 198       if(0==denominator/numerator)199       {200         String res="0";201         return res;202       }203       else204       {205       String zi1=String.valueOf(numerator);206       String zi2=String.valueOf(denominator);207       String zi3="/";208       String res2=zi1+zi3+zi2;  209       return res2;   }210    211     } 212     static String fractDiv(int first_numerator,int first_denominator,int second_numerator,int second_denominator){ 213      214       //需要调用求最大公约数的函数 215        216       int denominator; 217       int numerator; 218        219       numerator = first_numerator*second_denominator; 220       denominator = first_denominator*second_numerator; 221        222          223         224       int gcd = gcd(numerator,denominator); 225       denominator = denominator / gcd; 226       numerator = numerator / gcd;     227       String zi1=String.valueOf(numerator);228       String zi2=String.valueOf(denominator);229       String zi3="/";230       String res2=zi1+zi3+zi2;231       return res2;     232    233     }234     static String fractDiv2(int first,int second){ 235      236       //需要调用求最大公约数的函数    237       int denominator= first; 238       int numerator= second;    239       int gcd = gcd(numerator,denominator); 240       denominator = denominator / gcd; 241       numerator = numerator / gcd;     242       String zi1=String.valueOf(numerator);243       String zi2=String.valueOf(denominator);244       String zi3="/";245       String res2=zi1+zi3+zi2;246       return res2;      247     }248   static int gcd(int x,int y){ //利用辗转相除法求最大公约数249     int r;    250      while( y!= 0)    251       {    252        r = x%y;    253        x = y;    254        y = r;    255       }    256    return x; 257     258   } 259   260 261 }

原标题:一个简单的加减乘除自动生成小程序升级版(JAVA)

关键词:JAVA

*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们: admin#shaoqun.com (#换成@)。