这是四则运算完整版的java代码程序。
可以实现的功能如下:
1、定义参数控制生成题目的个数。 例如,参数n=10;则将生成10个题目。
2、定义参数控制题目中数值(自然数、真分数和真分数分母)的范围。 例如参数r= 10,将生成10以内(不包括10)的四则运算题目。该参数可以设置为1或其他自然数。 该参数必须给定,否则程序报错并给出帮助信息。
3、生成的题目中计算过程不能产生负数,也就是说算术表达式中如果存在形如e1 − e2的子表达式,那么e1 ≥ e2。
4、生成的题目中如果存在形如e1 ÷ e2的子表达式,那么其结果应是真分数。
5. 每道题目中出现的运算符个数不超过3个。
6.程序一次运行生成的题目不能重复,即任何两道题目不能通过有限次交换+和×左右的算术表达式变换为同一道题目。
7.生成的题目存储到数据库中, 格式如下: 1. 四则运算题目1 2. 四则运算题目2 …… 其中真分数在输入输出时采用如下格式,真分数五分之三表示为3/5,真分数二又八分之三表示为2’3/8。
8. 在生成题目的同时,计算出所有题目的答案,并存入数据库文件。 格式如下: 1. 答案1 2. 答案2 特别的,真分数的运算如下例所示:1/6 + 1/8 = 7/24。
9. 程序应能支持一万道题目的生成。
10. 程序支持对给定的题目文件和答案文件,判定答案中的对错并进行数量统计。
源代码:
import java.util.Random;import java.sql.Connection;import java.sql.DriverManager;import java.util.Scanner;class Suan1//生成整数计算的类{ public int x,y,c;//定义两个变量,还有一个符号变量 public Random random=new Random();//定义随机数 String m;//生成的计算式储存咋m里面 int fanwei; public String shengcheng(int fanwei1)//自动生成数的函数 { fanwei=fanwei1; c=random.nextInt(4);//生成符号 String fuhao; x=random.nextInt(fanwei);//生成100以内的自然数 y=random.nextInt(fanwei); if(c==0)//0是加法 { fuhao="+"; m=String.valueOf(x)+fuhao+String.valueOf(y); } else if(c==1)//1是减法 { fuhao="-"; if(x>=y) { m=String.valueOf(x)+fuhao+String.valueOf(y); } else { m=String.valueOf(y)+fuhao+String.valueOf(x); } } else if(c==2) { fuhao="*"; m=String.valueOf(x)+fuhao+String.valueOf(y); } else { fuhao="/"; for(int i=0;;i++) { if(y==0) { y=random.nextInt(fanwei); } else { break; } } m=String.valueOf(x)+fuhao+String.valueOf(y); } return m; } public String shuchu()//定义输出函数 { if(c==0) { System.out.print(m+"="); return (String.valueOf(x+y));//并且返回计算的结果 } else if(c==1) { if(x>=y)//将较大的数放在前面,不能出现负数 { System.out.print(m+"="); return (String.valueOf(x-y)); } else { System.out.print(m+"="); return (String.valueOf(y-x)); } } else if(c==2) { System.out.print(m+"="); return (String.valueOf(x*y)); } else { System.out.print(m+"="); if(x%y==0) { return (String.valueOf(x/y)); } else { if(x>y) { int shang=x/y; int yushu=x-y*shang; return (String.valueOf(shang)+"‘"+String.valueOf(yushu)+"/"+String.valueOf(y)); } else { return (String.valueOf(x)+"/"+String.valueOf(y)); } } } } public int fanhuic() { return c; } public String jisuan() { if(c==0) { return (String.valueOf(x+y));//并且返回计算的结果 } else if(c==1) { if(x>=y)//将较大的数放在前面,不能出现负数 { return (String.valueOf(x-y)); } else { return (String.valueOf(y-x)); } } else if(c==2) { return (String.valueOf(x*y)); } else { if(x%y==0) { return (String.valueOf(x/y)); } else { return (String.valueOf(x)+"/"+String.valueOf(y)); } } } public int jianyan(String a[],int s)//检验是否有重复的式子,如果有返回0,没有就返回1 { int flag=1; for(int i=0;iy&&m>n)//生成的分母必须大于分子,输出不同的结果 { System.out.print(y+"/"+x+" + "+n+"/"+m+"="); return jisuan(x,y,m,n,c);//返回计算结果 } else if(x>y&&mc) { gongbei=a;//公倍数从大的开始 while(gongbei<=a*c) { if(gongbei%a==0&&gongbei%c==0) { break; } gongbei++; } } else { gongbei=c;//公倍数从大的开始 while(gongbei<=a*c) { if(gongbei%a==0&&gongbei%c==0) { break; } gongbei++; } } return gongbei; } public int Gongyue(int gongbei,int s3)//求最大公约数的函数 { int i=1,gongyue=0; if(gongbei>s3)//公约数从1到最小的数 { while(i<=s3) { if(gongbei%i==0&&s3%i==0) { gongyue=i; } i++; } return gongyue; } else { while(i<=gongbei) { if(gongbei%i==0&&s3%i==0) { gongyue=i; } i++; } return gongyue; } } public int jianyan(String a[],int l)//检验是否生成重复计算式的函数 { int flag=1; for(int i=0;i y) { int shang=x2/y; int yushu=x2-y*shang; daan=String.valueOf(shang)+"‘"+String.valueOf(yushu)+"/"+String.valueOf(y); } else { daan=String.valueOf(x2)+"/"+String.valueOf(y); } } } else if(c==1) { int x1=b*y; int x2=x1-x; if(x2%y==0) { daan=String.valueOf(x2/y); } else { if(x2>y) { int shang=x2/y; int yushu=x2-y*shang; daan=String.valueOf(shang)+"‘"+String.valueOf(yushu)+"/"+String.valueOf(y); } else { daan=String.valueOf(x2)+"/"+String.valueOf(y); } } } else if(c==2) { int x2=x*b; if(x2%y==0) { daan=String.valueOf(x2/y); } else { if(x2>y) { int shang=x2/y; int yushu=x2-y*shang; daan=String.valueOf(shang)+"‘"+String.valueOf(yushu)+"/"+String.valueOf(y); } else { daan=String.valueOf(x2)+"/"+String.valueOf(y); } } } } else { if(c==0) { daan=String.valueOf(b+z); } else if(c==1) { daan=String.valueOf(b-z); } else { daan=String.valueOf(b*z); } } } else { m="("+a1+")"+fuhao+String.valueOf(b); if(weizhi!=-1&&panduan==3) { if(c==0) { int x1=b*y; int x2=x+x1; if(x2%y==0) { daan=String.valueOf(x2/y); } else { if(x2>y) { int shang=x2/y; int yushu=x2-y*shang; daan=String.valueOf(shang)+"‘"+String.valueOf(yushu)+"/"+String.valueOf(y); } else { daan=String.valueOf(x2)+"/"+String.valueOf(y); } } } else if(c==1) { int x1=b*y; int x2=x-x1; if(x2%y==0) { daan=String.valueOf(x2/y); } else { if(x2>y) { int shang=x2/y; int yushu=x2-y*shang; daan=String.valueOf(shang)+"‘"+String.valueOf(yushu)+"/"+String.valueOf(y); } else { daan=String.valueOf(x2)+"/"+String.valueOf(y); } } } else if(c==2) { int x2=x*b; if(x2%y==0) { daan=String.valueOf(x2/y); } else { if(x2>y) { int shang=x2/y; int yushu=x2-y*shang; daan=String.valueOf(shang)+"‘"+String.valueOf(yushu)+"/"+String.valueOf(y); } else { daan=String.valueOf(x2)+"/"+String.valueOf(y); } } } } else { if(c==0) { daan=String.valueOf(z+b); } else if(c==1) { daan=String.valueOf(z-b); } else { daan=String.valueOf(z*b); } } } } else { if(c==1&&daxiao>b) { m="("+a1+")"+fuhao+String.valueOf(b); if(weizhi!=-1&&panduan==3) { if(c==0) { int x1=b*y; int x2=x+x1; if(x2%y==0) { daan=String.valueOf(x2/y); } else { if(x2>y) { int shang=x2/y; int yushu=x2-y*shang; daan=String.valueOf(shang)+"‘"+String.valueOf(yushu)+"/"+String.valueOf(y); } else { daan=String.valueOf(x2)+"/"+String.valueOf(y); } } } else if(c==1) { int x1=b*y; int x2=x-x1; if(x2%y==0) { daan=String.valueOf(x2/y); } else { if(x2>y) { int shang=x2/y; int yushu=x2-y*shang; daan=String.valueOf(shang)+"‘"+String.valueOf(yushu)+"/"+String.valueOf(y); } else { daan=String.valueOf(x2)+"/"+String.valueOf(y); } } } else if(c==2) { int x2=x*b; if(x2%y==0) { daan=String.valueOf(x2/y); } else { if(x2>y) { int shang=x2/y; int yushu=x2-y*shang; daan=String.valueOf(shang)+"‘"+String.valueOf(yushu)+"/"+String.valueOf(y); } else { daan=String.valueOf(x2)+"/"+String.valueOf(y); } } } } else { if(c==0) { daan=String.valueOf(z+b); } else if(c==1) { daan=String.valueOf(z-b); } else { daan=String.valueOf(z*b); } } } else { m=String.valueOf(b)+fuhao+"("+a1+")"; if(weizhi!=-1&&panduan==3) { if(c==0) { int x1=b*y; int x2=x+x1; if(x2%y==0) { daan=String.valueOf(x2/y); } else { if(x2>y) { int shang=x2/y; int yushu=x2-y*shang; daan=String.valueOf(shang)+"‘"+String.valueOf(yushu)+"/"+String.valueOf(y); } else { daan=String.valueOf(x2)+"/"+String.valueOf(y); } } } else if(c==1) { int x1=b*y; int x2=x1-x; if(x2%y==0) { daan=String.valueOf(x2/y); } else { if(x2>y) { int shang=x2/y; int yushu=x2-y*shang; daan=String.valueOf(shang)+"‘"+String.valueOf(yushu)+"/"+String.valueOf(y); } else { daan=String.valueOf(x2)+"/"+String.valueOf(y); } } } else if(c==2) { int x2=x*b; if(x2%y==0) { daan=String.valueOf(x2/y); } else { if(x2>y) { int shang=x2/y; int yushu=x2-y*shang; daan=String.valueOf(shang)+"‘"+String.valueOf(yushu)+"/"+String.valueOf(y); } else { daan=String.valueOf(x2)+"/"+String.valueOf(y); } } } } else { if(c==0) { daan=String.valueOf(b+z); } else if(c==1) { daan=String.valueOf(b-z); } else { daan=String.valueOf(b*z); } } } } m=m+"="; return m; } public int jianyan(String a[],int l)//检验是否重复的函数 { int flag=1; for(int i=0;i
结果截图:
这是我耗时一周努力的结果,如有不足之处请大家提出。