两人组队,小学生的四则运算
两人组队:王汉斌,尹良亮
需求概要:
编写出一个能自动生成小学四则运算题目的软件,并能够判断其正确性
分析:
由于给小学生出四则运算,其主要是产生随机数,调用加减乘除的方法。其中,最主要的是考虑到除法的问题,因为除法需要使用double型或者float型。
部分代码如下:
package fourarithmetic; import java.util.Random; import java.util.Scanner; public class FourArithmetic { public static void main(String[] args) { /** * 循环输出题数,并通过random产生随机数, */ // 初始化对错为0 int right = 0; int wrong = 0; for (int i = 1; i <= 8; i++) { System.out.println("第" + i + "道题:");// 做到第几题,循环输出 Random r = new Random();// 产生一个随机数,进行出题 int a = r.nextInt(12) + 1; Random r1 = new Random(); int b = r1.nextInt(12) + 1; Random r2 = new Random();// 生成随机运算符 int c = r2.nextInt(3) + 1; char chrs[] = { '+', '-', '*', '/' }; String chr = String.valueOf(chrs[c]); if (chr.equals("+")) { // 调用add进行加法运算 System.out.println(a + "+" + b + "="); boolean x = add(a, b); if (x == true) { System.out.println("输入正确"); right++; } else { System.out.println("计算错误"); wrong++; } System.out.println("正确答案是:" + (a + b)); } if (chr.equals("-")) { // 调用减法方法进行运算 System.out.println(a + "-" + b + "="); boolean x = sub(a, b); if (x == true) { System.out.println("输入正确"); right++; } else { System.out.println("计算错误"); wrong++; } System.out.println("正确答案是:" + (a - b)); } if (chr.equals("*")) { // 调用乘法进行运算 System.out.println(a + "*" + b + "="); boolean x = multiplication(a, b); if (x == true) { System.out.println("输入正确"); right++; } else { System.out.println("计算错误"); wrong++; } System.out.println("正确答案是:" + (a * b)); } if (chr.equals("/")) { // 调用division除法进行运算 System.out.println(a + "/" + b + "="); boolean x = division(a, b); if (x == true) { System.out.println("输入正确"); right++; } else { System.out.println("计算错误"); wrong++; } System.out.println("正确答案是:" + ((double) a / (double) b)); } } System.out.println("************************"); System.out.println("总共作对了?" + right + "题"); System.out.println("共做错了?" + wrong + "题"); } // 以下分别为加减乘除的方法 private static boolean add(int a, int b) { Scanner s = new Scanner(System.in);// 系统输入 int n = s.nextInt(); int res = a + b; if (n == res) { return true; } else { return false; } } private static boolean sub(int a, int b) { Scanner s = new Scanner(System.in);// 系统输入 int n = s.nextInt(); int res = a - b; if (n == res) { return true; } else { return false; } } private static boolean multiplication(int a, int b) { Scanner s = new Scanner(System.in);// 系统输入 int n = s.nextInt(); int res = a * b; if (n == res) { return true; } else { return false; } } private static boolean division(int a, int b) { Scanner s = new Scanner(System.in);// 系统输入 float n = s.nextFloat(); float res = (float) a / (float) b; if (n == res) { return true; } else { return false; } } }
执行结果:
第1道题:
7/3=
2.33333
计算错误
正确答案是:2.3333333333333335
第2道题:
12-10=
2
输入正确
正确答案是:2
第3道题:
3/7=
0.4285
计算错误
正确答案是:0.42857142857142855
第4道题:
9/3=
3
输入正确
正确答案是:3.0
第5道题:
2/10=
0.2
输入正确
正确答案是:0.2
第6道题:
4*5=
20
输入正确
正确答案是:20
第7道题:
2/12=
0.16
计算错误
正确答案是:0.16666666666666666
第8道题:
5/7=
0.7142
计算错误
正确答案是:0.7142857142857143
************************
总共作对了?4题
共做错了?4题
有待提高的问题:如果加入到括号,怎么进行编写,若在除法中,怎么样保留位数,什么时候进行进位。怎么样编写程序才能支持真分数的四则运算等等问题,由于此题可扩展性强,所以还有很多地方有待提高。
工程源码地址:https://git.coding.net/handsomeman/four_arithmetic.git
ssh://git@git.coding.net:handsomeman/four_arithmetic.git