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

1 importjava.util.Scanner;2 public classSuan {3 public static voidmain(String[] args) {4 int []b;//设置数组来存放随机产生数

5 b=new int [4];6 Scanner in=newScanner(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

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

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)//减法计算结果不能为079 {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 else

104 rshu++;105 //System.out.println(sum);

106 }107 System.out.println(r);108

109 }110 }111 else

112 {}113 System.out.println("你一共答对了"+rshu+"道题");114

115 }116 static String fracAdd(int first_numerator,int first_denominator,int second_numrator,intsecond_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 returnres;140 }141 else

142 {143 String zi1=String.valueOf(numerator);//把结果转换成字符串输出

144 String zi2=String.valueOf(denominator);//把结果转换成字符串输出

145 String zi3="/";//把结果转换成字符串输出

146 String res2=zi1+zi3+zi2;//把结果转换成字符串输出

147

148 returnres2; }149

150 }151 static String fracSub(int first_numerator,int first_denominator,int second_numrator,intsecond_denominator){152

153 //需要调用求最大公约数的函数

154

155 intdenominator;156 intnumerator;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 returnres;175 }176 else

177 {178 String zi1=String.valueOf(numerator);179 String zi2=String.valueOf(denominator);180 String zi3="/";181 String res2=zi1+zi3+zi2;182 returnres2; }183

184 }185 static String fracMul(int first_numerator,int first_denominator,int second_numerator,intsecond_denominator){186

187 //需要调用求最大公约数的函数

188 intdenominator;189 intnumerator;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 returnres;202 }203 else

204 {205 String zi1=String.valueOf(numerator);206 String zi2=String.valueOf(denominator);207 String zi3="/";208 String res2=zi1+zi3+zi2;209 returnres2; }210

211 }212 static String fractDiv(int first_numerator,int first_denominator,int second_numerator,intsecond_denominator){213

214 //需要调用求最大公约数的函数

215

216 intdenominator;217 intnumerator;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 returnres2;232

233 }234 static String fractDiv2(int first,intsecond){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 returnres2;247 }248 static int gcd(int x,int y){ //利用辗转相除法求最大公约数

249 intr;250 while( y!= 0)251 {252 r = x%y;253 x =y;254 y =r;255 }256 returnx;257

258 }259

260

261 }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值