首页 > 代码库 > 两人组队,小学生的四则运算

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

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

 

需求概要:

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

分析:

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

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