四则运算继承篇
(1)题目要求
1.定义主界面菜单
参数设置
小学二年级口算题
小学三年级口算题
小学四年级口算题
错题集
2.其中参数设置包括出题个数(缺省值为30)、操作数数值范围。
3.小学二年级口算题操作数为两个、可进行加减乘除运算(除法必须可以整除),操作数范围不超过100.
4.小学三年级口算题操作数不超过4个,可以进行加减乘除,操作数范围不超过1000.(要求采用继承小学二年级出题类的方式,实现小学三年级的出题类)
5.小学四年级口算题操作数不超过5个,可以进行加减乘除,还可以加入括号运算。 (要求采用继承小学三年级出题类的方式,实现小学四年级的出题类)
6.学生实时答题结束后,可以选择是否进行下一套题目答题,如果选择是,则抽取下一套题进行答题,答题结束可以通过查看错题本,查询今日做题正确率。也可以针对错题进行二次答题。
//主方法类
package ceshi;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("1.参数设置");
System.out.println("2.小学二年级口算题");
System.out.println("3.小学三年级口算题");
System.out.println("4.小学四年级口算题");
System.out.println("5.退出");
while(true) {
System.out.println("请输入你的选择:");
int a=sc.nextInt();
switch(a) {
case 1:{
break;
}
case 2:{
er e=new er();
e.chuti();
System.out.println("请输入:0.退出 1.继续答题 2.查看错题");
int b=sc.nextInt();
if(b==0) System.exit(0);
if(b==2) {e.chongzuo();System.exit(0);}
break;
}
case 3:{
san s=new san();
s.chuti();
System.out.println("请输入:0.退出 1.继续答题 2.查看错题");
int b=sc.nextInt();
if(b==0) System.exit(0);
if(b==2) {s.chongzuo();System.exit(0);}
break;
}
case 4:{
si s=new si();
s.chuti();
System.out.println("请输入:0.退出 1.继续答题 2.查看错题");
int b=sc.nextInt();
if(b==0) System.exit(0);
if(b==2) {s.chongzuo();System.exit(0);}
break;
}
case 5:System.exit(0);
}
}
}
}
//三年级类
package ceshi;
import java.util.Random;
public class san extends er{
int sumoperate;
public int getSumoperate() {
return sumoperate;
}
public void setSumoperate(int sumoperate) {
this.sumoperate = sumoperate;
}
public void problem(int min,int max,int sumoperate,int chengchu) {
Random r=new Random();
int a=r.nextInt(max+1)+min;
int b=r.nextInt(max+1)+min;
char c=fuHao();
String str=""+a+c+b;
int []cunshu = new int[1000];
char []cunfuhao =new char[1000];
int shu=0;
int fuhao=0;
if(c=='*')
{
cunshu[shu]=a*b;
}
else if(c=='/')
{
cunshu[shu]=a/b;
}
else
{
cunshu[shu]=a;
shu++;
cunshu[shu]=b;
cunfuhao[fuhao]=c;
}
for(int i=2;i<sumoperate;i++)
{
int zenjiashu=r.nextInt(max+1)+min;
char zenjiac = fuHao();
if(zenjiac=='*')
{
cunshu[shu]=cunshu[shu]*zenjiashu;
}
else if(zenjiac=='/')
{
cunshu[shu]=cunshu[shu]/zenjiashu;
}
else
{
shu++;
cunshu[shu]=zenjiashu;
fuhao++;
cunfuhao[fuhao]=zenjiac;
}
str=str+zenjiac+zenjiashu;
}
int zhengquedaan=cunshu[0];
int cou=0;
for(int j=0;j<=fuhao;j++)
{
if(cunfuhao[cou]=='+')
{
zhengquedaan+=cunshu[++cou];
}
else
{
zhengquedaan-=cunshu[++cou];
}
}
if(chachong(str))
{
zqda[ccount]=zhengquedaan;
System.out.println(arr[ccount]+"=");
System.out.println(zhengquedaan);
int daan;
daan = sc.nextInt();
if(daan!=zhengquedaan)
{
cuoticount++;
cishu[ccount]=1;
System.out.println("回答错误");
}
else System.out.println("回答正确");
ccount++;
}
else
{
problem(min,max,sumoperate,chengchu);
}
}
public void chuti() {
System.out.println("请输入操作数:");
sumoperate=sc.nextInt();
System.out.println("请输入题目个数:");
sumtitle = sc.nextInt();
System.out.println("请输入操作数范围:");
min = sc.nextInt();
max = sc.nextInt();
tishusum=sumtitle;
for (int i=0; i<sumtitle;i++) {
problem();
}
}
}
//四年级类
package ceshi;
public class si extends san{
public void chuti() {
System.out.println("请输入操作数:");
sumoperate=sc.nextInt();
System.out.println("请输入题目个数:");
sumtitle = sc.nextInt();
System.out.println("请输入操作数范围:");
min = sc.nextInt();
max = sc.nextInt();
for (int i=0; i<sumtitle;i++) {
problem();
}
}
}
package ceshi; import java.util.Random; import java.util.Scanner; public class er { static int count=0; static int ccount=0; static int cuoticount=0; static int congzuosum=1; static int tishusum=0; static String []arr = new String[100000]; static int []zqda = new int[100000]; static int []cishu = new int[100000]; static Scanner sc = new Scanner(System.in); int sumtitle; int min; int max; public int getSumtitle() { return sumtitle; } public void setSumtitle(int sumtitle) { this.sumtitle = sumtitle; } public int getMin() { return min; } public void setMin(int min) { this.min = min; } public int getMax() { return max; } public void setMax(int max) { this.max = max; } public char fuHao() { Random random=new Random(); int a; a=random.nextInt(4)+1; if(a==1) return '+'; if(a==2) return '-'; if(a==3) return '*'; if(a==4) return '/'; return ' '; } public void problem() { Random random=new Random(); String s=""; int a=random.nextInt(max+1)+min; s+=a; char b=fuHao(); s+=b; int c; if(b=='/') { c=random.nextInt(max+1)+min; while(a%c!=0) c=random.nextInt(max+1)+min; s+=c; } else { c=random.nextInt(max+1)+min; s+=c; } int zhengquedaan=0; if(b=='*') { zhengquedaan=a*c; } if(b=='/') { zhengquedaan=a/c; } if(b=='+') { zhengquedaan=a+c; } if(b=='-') { zhengquedaan=a-c; } if(chachong(s)) { zqda[ccount]=zhengquedaan; System.out.println(arr[ccount]+"="); int daan; daan = sc.nextInt(); if(daan!=zhengquedaan) { cuoticount++; cishu[ccount]=1; System.out.println("回答错误"); } else System.out.println("回答正确"); ccount++; } else { problem(); } } public boolean chachong(String str) { if(count==0) { arr[0]=str; count++; return true; } else { for(int i=0;i<count;i++) if(str.equals(arr[i])) return false; arr[count]=str; count++; } return true; } public static int shifouchongzuo() { System.out.println("是否需要错题重做:(1.是 2.否)"); int chongzuoma; chongzuoma = sc.nextInt(); return chongzuoma; } public void chongzuo() { System.out.println("错误率:"+cuoticount*100/tishusum+"%"); while(true) { if(shifouchongzuo()==1) { int n=cuoticount; cuoticount=0; lop:for(int i=0;i<n;i++) { for(int j=0;i<tishusum;j++) { if(cishu[j]==congzuosum) { System.out.println(arr[j]+"="); int da; da = sc.nextInt(); if(da!=zqda[j]) { System.out.println("正确答案:"+zqda[j]); cishu[j]+=1; cuoticount++; break lop; } } } } congzuosum++; System.out.println("错误率:"+cuoticount*100/n+"%"); } else { jielun(); break; } } } public void jielun() { for(int j=0;j<tishusum;j++) { if(cishu[j]!=0) { System.out.println(arr[j]+"="+zqda[j]+" 你错了"+cishu[j]+"次"); } } } public void chuti() { System.out.println("请输入题目个数:"); sumtitle = sc.nextInt(); System.out.println("请输入操作数范围:"); min = sc.nextInt(); max = sc.nextInt(); tishusum=sumtitle; for (int i=0; i<sumtitle;i++) { problem(); } } }

浙公网安备 33010602011771号