标签:
两人组队:王汉斌,尹良亮
需求概要:
编写出一个能自动生成小学四则运算题目的软件,并能够判断其正确性
分析:
由于给小学生出四则运算,其主要是产生随机数,调用加减乘除的方法。其中,最主要的是考虑到除法的问题,因为除法需要使用double型或者float型。
部分代码如下:
package fourarithmetic;
import java.util.Random;
import java.util.Scanner;
public class FourArithmetic {
	/**
	 * 循环输出题数,并通过random产生随机数,
	 */
	public static void main(String[] args) {
       //初始化对错为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]);
    	   //调用add进行加法运算
    	   if(chr.equals("+")){
    		   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));
    	   }
//调用division除法进行运算
    	   if(chr.equals("/")){
    		   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
标签:
原文地址:http://www.cnblogs.com/handsomemanwhb/p/5844083.html