两人组队,小学生的四则运算

两人组队:王汉斌,尹良亮

 

需求概要:

编写出一个能自动生成小学四则运算题目的软件,并能够判断其正确性

分析:

由于给小学生出四则运算,其主要是产生随机数,调用加减乘除的方法。其中,最主要的是考虑到除法的问题,因为除法需要使用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

posted @ 2016-09-05 23:22  handsomeman  阅读(256)  评论(4编辑  收藏  举报