zoukankan      html  css  js  c++  java
  • 两人组队,小学生的四则运算

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

    需求概要:

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

    分析:

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

  • 相关阅读:
    贝塞尔曲线实现的购物车添加商品动画效果
    Rxjava学习(一基础篇)
    OkHttp3源码详解(三) 拦截器-RetryAndFollowUpInterceptor
    ViewDragHelper详解(侧滑栏)
    linux系统装windows时需要注意的问题
    ARM GCC 内嵌汇编手册
    ADS的默认连接分析及编译器产生符号解惑
    ARM 的Thumb状态测试
    load-store/register-memory/register-plus-memory比较
    进位位(carry)与溢出位(overflow)的区别
  • 原文地址:https://www.cnblogs.com/handsomemanwhb/p/5844083.html
Copyright © 2011-2022 走看看