二柱子四则运算最终版
import java.util.*;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Calculate2
{
public static int bottom;
public static int top;
public static int number=30;
public static void setBAT(int number1,int bottom1,int top1)
{
number=number1;
bottom=bottom1;
top=top1;
}
public static void RandomInt( ) throws Exception
{
int i;
int temp;
int p=0;
int n=30;
int m;
int bottom1=0;
int top1=0;
int choose;
int reset;
int bracket;
String []error=new String[100];
Scanner scan=new Scanner(System.in);
String [ ]string=new String[100];
System.out.println("1、参数设置");
System.out.println("2、小学二年级口算题");
System.out.println("3、小学三年级口算题");
System.out.println("4、小学四年级口算题");
System.out.println("5、错题集");
System.out.print("欢迎使用小学出题系统!请选择功能:");
m=scan.nextInt( );
while(m>0&&m<6)
{
switch(m)
{
case 1:
{
System.out.print("请输入题目个数:");
n=scan.nextInt( );
System.out.println("请输入操作数范围(提示如果你的孩子为二年级请把操作数范围设置为0-100,三年级的操作数上限不要超过1000):(提示如果你的孩子为二年级请把操作数范围设置为0-100,三年级的操作数上限不要超过1000)");
System.out.print("小值:");
bottom1=scan.nextInt( );
System.out.print("大值:");
top1=scan.nextInt( );
setBAT(n,bottom1,top1);
}break;
case 2:
{
System.out.print("是否重置参数(1重置,其他不重置):");
reset=scan.nextInt( );
if(reset==1)
{
System.out.print("请输入题目个数:");
n=scan.nextInt( );
System.out.println("请输入操作数范围(提示如果你的孩子为二年级请把操作数范围设置为0-100,三年级的操作数上限不要超过1000):(提示如果你的孩子为二年级请把操作数范围设置为0-100,三年级的操作数上限不要超过1000)");
System.out.print("小值:");
bottom1=scan.nextInt( );
System.out.print("大值:");
top1=scan.nextInt( );
setBAT(n,bottom1,top1);
}
if(top!=0)
{
System.out.print("请输入是否需要乘除法(1是需要,0是不需要):");
temp=scan.nextInt( );
RandomInt2(m,number,bottom,top,temp,string);
System.out.print("以上是所出题目,下面来计算:"+'\n');
p=Exem(string,error,n);
}
}break;
case 3:
{
System.out.print("是否重置参数(1重置,其他不重置):");
reset=scan.nextInt( );
if(reset==1)
{
System.out.print("请输入题目个数:");
n=scan.nextInt( );
System.out.println("请输入操作数范围(提示如果你的孩子为二年级请把操作数范围设置为0-100,三年级的操作数上限不要超过1000):(提示如果你的孩子为二年级请把操作数范围设置为0-100,三年级的操作数上限不要超过1000)");
System.out.print("小值:");
bottom1=scan.nextInt( );
System.out.print("大值:");
top1=scan.nextInt( );
setBAT(n,bottom1,top1);
}
if(top!=0)
{
System.out.print("请输入是否需要乘除法(1是需要,0是不需要):");
temp=scan.nextInt( );
System.out.print("请输入操作数个数(不要超过四个):");
choose=scan.nextInt( );
if(choose==3)
{
RandomInt3(number,bottom,top,temp,string,0);
System.out.print("以上是所出题目,下面来计算:"+'\n');
p=Exem(string,error,n);
}
if(choose==2)
{
RandomInt2(m,number,bottom,top,temp,string);
System.out.print("以上是所出题目,下面来计算:"+'\n');
p=Exem(string,error,n);
}
if(choose==4)
{
RandomInt4(number,bottom,top,temp,string,0);
System.out.print("以上是所出题目,下面来计算:"+'\n');
p=Exem(string,error,n);
}
}
}break;
case 4:
{
System.out.print("是否重置参数(1重置,其他不重置):");
reset=scan.nextInt( );
if(reset==1)
{
System.out.print("请输入题目个数:");
n=scan.nextInt( );
System.out.println("请输入操作数范围(提示如果你的孩子为二年级请把操作数范围设置为0-100,三年级的操作数上限不要超过1000):(提示如果你的孩子为二年级请把操作数范围设置为0-100,三年级的操作数上限不要超过1000)");
System.out.print("小值:");
bottom1=scan.nextInt( );
System.out.print("大值:");
top1=scan.nextInt( );
setBAT(n,bottom1,top1);
}
if(top!=0)
{
System.out.print("请输入是否需要乘除法(1是需要,0是不需要):");
temp=scan.nextInt( );
System.out.print("请输入是否进行括号运算(1进行,0不进行):");
bracket=scan.nextInt( );
System.out.print("请输入操作数个数(不要超过五个):");
choose=scan.nextInt( );
if(choose==3)
{
RandomInt3(n,bottom,top,temp,string,bracket);
System.out.print("以上是所出题目,下面来计算:"+'\n');
p=Exem(string,error,n);
}
if(choose==2)
{
RandomInt2(m,n,bottom,top,temp,string);
System.out.print("以上是所出题目,下面来计算:"+'\n');
p=Exem(string,error,n);
}
if(choose==4)
{
RandomInt4(n,bottom,top,temp,string,bracket);
System.out.print("以上是所出题目,下面来计算:"+'\n');
p=Exem(string,error,n);
}
if(choose==5)
{
RandomInt5(n,bottom,top,temp,string,bracket);
System.out.print("以上是所出题目,下面来计算:"+'\n');
p=Exem(string,error,n);
}
}
}break;
case 5:
{
Reerror(error,p,string);
}break;
}
System.out.println("1、参数设置");
System.out.println("2、小学二年级口算题");
System.out.println("3、小学三年级口算题");
System.out.println("4、小学四年级口算题");
System.out.println("5、错题集");
System.out.print("欢迎使用小学出题系统!请选择功能:");
m=scan.nextInt( );
}
}
private static double doubleCal(double a1, double a2, char operator) throws Exception {
switch (operator) {
case '+':
return a1 + a2;
case '-':
return a1 - a2;
case '*':
return a1 * a2;
case '/':
return a1 / a2;
default:
break;
}
throw new Exception("illegal operator!");
}
private static int getPriority(String s) throws Exception {
if(s==null) return 0;
switch(s) {
case "(":return 1;
case "+":;
case "-":return 2;
case "*":;
case "/":return 3;
default:break;
}
throw new Exception("illegal operator!");
}
private static String toSufExpr(String expr) throws Exception {
StringBuffer sufExpr = new StringBuffer();
Stack<String> operator = new Stack<String>();
operator.push(null);
Pattern p = Pattern.compile("(?<!\\d)-?\\d+(\\.\\d+)?|[+\\-*/()]");
Matcher m = p.matcher(expr);
while (m.find()) {
String temp = m.group();
if (temp.matches("[+\\-*/()]")) {
if (temp.equals("(")) {
operator.push(temp);
} else if (temp.equals(")")) {
String topItem = null;
while (!(topItem = operator.pop()).equals("(")) {
sufExpr.append(topItem+" ");
}
} else {
while(getPriority(temp) <= getPriority(operator.peek())) {
sufExpr.append(operator.pop()+" ");
}
operator.push(temp);
}
}else {
sufExpr.append(temp+" ");
}
}
String topItem = null;
while(null != (topItem = operator.pop())) {
sufExpr.append(topItem+" ");
}
return sufExpr.toString();
}
public static String getResult(String expr) throws Exception {
String sufExpr = toSufExpr(expr);
Stack<Double> number = new Stack<Double>();
Pattern p = Pattern.compile("-?\\d+(\\.\\d+)?|[+\\-*/]");
Matcher m = p.matcher(sufExpr);
while (m.find()) {
String temp = m.group();
if (temp.matches("[+\\-*/]")) {
double a1 = number.pop();
double a2 = number.pop();
double res = doubleCal(a2, a1, temp.charAt(0));
number.push(res);
} else {
number.push(Double.valueOf(temp));
}
}
return number.pop() + "";
}
public static void RandomInt2(int m,int n,int bottom,int top,int temp,String string[])
{
int a,b,c,i,e;
char d;
Scanner scan=new Scanner(System.in);
Random rand=new Random( );
if(temp==1)
{
for(i=0;i<n;i++)
{
a=rand.nextInt(top-bottom)+(bottom);
b=rand.nextInt(top-bottom)+(bottom);
c=rand.nextInt(4);
if(a>b)
{
e=a;
a=b;
b=e;
}
switch(c)
{
case 0:
{
d='+';
string[i]=String.valueOf(b)+d+String.valueOf(a);
System.out.println(string[i]);
}break;
case 1:
{
d='-';
string[i]=String.valueOf(b)+d+String.valueOf(a);
System.out.println(string[i]);
}break;
case 2:
{
d='*';
string[i]=String.valueOf(b)+d+String.valueOf(a);
System.out.println(string[i]);
}break;
case 3:
{
d='/';
if(m==2)
{
while(b%a!=0)
{
a=rand.nextInt(top-bottom)+(bottom);
b=rand.nextInt(top-bottom)+(bottom);
}
}
string[i]=String.valueOf(b)+d+String.valueOf(a);
System.out.println(string[i]);
}break;
}
}
}
if(temp==0)
{
for(i=0;i<n;i++)
{
a=rand.nextInt(top-bottom)+(bottom);
b=rand.nextInt(top-bottom)+(bottom);
c=rand.nextInt(2);
switch(c)
{
case 0:
{
d='+';
string[i]=String.valueOf(b)+d+String.valueOf(a);
System.out.println(string[i]);
}break;
case 1:
{
d='-';
string[i]=String.valueOf(b)+d+String.valueOf(a);
System.out.println(string[i]);
}break;
}
}
}
}
public static void RandomInt3(int n,int bottom,int top,int temp,String string[],int bracket)
{
int a,b,c,i,f,g,h,j;
char d,e=' ',u='(',v=')';
Scanner scan=new Scanner(System.in);
Random rand=new Random( );
String []string1=new String[100];
if(temp==1)
{
for(i=0;i<n;i++)
{
a=rand.nextInt(top-bottom)+(bottom);
b=rand.nextInt(top-bottom)+(bottom);
c=rand.nextInt(top-bottom)+(bottom);
f=rand.nextInt(4);
g=rand.nextInt(4);
h=rand.nextInt(3);
switch(f)
{
case 0:
{
d='+';
switch(g)
{
case 0:e='+';break;
case 1:e='-';break;
case 2:e='*';break;
case 3:e='/';break;
}
string1[0]=String.valueOf(a);
string1[1]=String.valueOf(b);
string1[2]=String.valueOf(c);
if(bracket==1)
{
switch(h)
{
case 0:
{
string1[0]=u+string1[0];
j=rand.nextInt(1)+(1);
string1[j]=string1[j]+v;
}
case 1:
{
string1[1]=u+string1[1];
string1[2]=string1[2]+v;
}
}
string[i]=string1[0]+d+string1[1]+e+string1[2];
System.out.println(string[i]);
}
if(bracket==0)
{
string[i]=string1[0]+d+string1[1]+e+string1[2];
System.out.println(string[i]);
}
}break;
case 1:
{
d='-';
switch(g)
{
case 0:e='+';break;
case 1:e='-';break;
case 2:e='*';break;
case 3:e='/';break;
}
string1[0]=String.valueOf(a);
string1[1]=String.valueOf(b);
string1[2]=String.valueOf(c);
if(bracket==1)
{
switch(h)
{
case 0:
{
string1[0]=u+string1[0];
j=rand.nextInt(1)+(1);
string1[j]=string1[j]+v;
}
case 1:
{
string1[1]=u+string1[1];
string1[2]=string1[2]+v;
}
}
string[i]=string1[0]+d+string1[1]+e+string1[2];
System.out.println(string[i]);
}
if(bracket==0)
{
string[i]=string1[0]+d+string1[1]+e+string1[2];
System.out.println(string[i]);
}
}break;
case 2:
{
d='*';
switch(g)
{
case 0:e='+';break;
case 1:e='-';break;
case 2:e='*';break;
case 3:e='/';break;
}
string1[0]=String.valueOf(a);
string1[1]=String.valueOf(b);
string1[2]=String.valueOf(c);
if(bracket==1)
{
switch(h)
{
case 0:
{
string1[0]=u+string1[0];
j=rand.nextInt(1)+(1);
string1[j]=string1[j]+v;
}
case 1:
{
string1[1]=u+string1[1];
string1[2]=string1[2]+v;
}
}
string[i]=string1[0]+d+string1[1]+e+string1[2];
System.out.println(string[i]);
}
if(bracket==0)
{
string[i]=string1[0]+d+string1[1]+e+string1[2];
System.out.println(string[i]);
}
}break;
case 3:
{
d='/';
switch(g)
{
case 0:e='+';break;
case 1:e='-';break;
case 2:e='*';break;
case 3:e='/';break;
}
string1[0]=String.valueOf(a);
string1[1]=String.valueOf(b);
string1[2]=String.valueOf(c);
if(bracket==1)
{
switch(h)
{
case 0:
{
string1[0]=u+string1[0];
j=rand.nextInt(1)+(1);
string1[j]=string1[j]+v;
}
case 1:
{
string1[1]=u+string1[1];
string1[2]=string1[2]+v;
}
}
string[i]=string1[0]+d+string1[1]+e+string1[2];
System.out.println(string[i]);
}
if(bracket==0)
{
string[i]=string1[0]+d+string1[1]+e+string1[2];
System.out.println(string[i]);
}
}break;
}
}
}
if(temp==0)
{
for(i=0;i<n;i++)
{
a=rand.nextInt(top-bottom)+(bottom);
b=rand.nextInt(top-bottom)+(bottom);
c=rand.nextInt(top-bottom)+(bottom);
f=rand.nextInt(4);
g=rand.nextInt(4);
h=rand.nextInt(3);
switch(c)
{
case 0:
{
d='+';
switch(g)
{
case 0:e='+';break;
case 1:e='-';break;
}
string1[0]=String.valueOf(a);
string1[1]=String.valueOf(b);
string1[2]=String.valueOf(c);
if(bracket==1)
{
switch(h)
{
case 0:
{
string1[0]=u+string1[0];
j=rand.nextInt(1)+(1);
string1[j]=string1[j]+v;
}
case 1:
{
string1[1]=u+string1[1];
string1[2]=string1[2]+v;
}
}
string[i]=string1[0]+d+string1[1]+e+string1[2];
System.out.println(string[i]);
}
if(bracket==0)
{
string[i]=string1[0]+d+string1[1]+e+string1[2];
System.out.println(string[i]);
}
}break;
case 1:
{
d='-';
switch(g)
{
case 0:e='+';break;
case 1:e='-';break;
}
string1[0]=String.valueOf(a);
string1[1]=String.valueOf(b);
string1[2]=String.valueOf(c);
if(bracket==1)
{
switch(h)
{
case 0:
{
string1[0]=u+string1[0];
j=rand.nextInt(1)+(1);
string1[j]=string1[j]+v;
}
case 1:
{
string1[1]=u+string1[1];
string1[2]=string1[2]+v;
}
}
string[i]=string1[0]+d+string1[1]+e+string1[2];
System.out.println(string[i]);
}
if(bracket==0)
{
string[i]=string1[0]+d+string1[1]+e+string1[2];
System.out.println(string[i]);
}
}break;
}
}
}
}
public static void RandomInt4(int n,int bottom,int top,int temp,String string[],int bracket)
{
int a,b,c,z,i,f,g,h,k,l;
char d,e=' ',j=' ',u='(',v=')';
String []string1=new String[100];
Scanner scan=new Scanner(System.in);
Random rand=new Random( );
if(temp==1)
{
for(i=0;i<n;i++)
{
a=rand.nextInt(top-bottom)+(bottom);
b=rand.nextInt(top-bottom)+(bottom);
c=rand.nextInt(top-bottom)+(bottom);
z=rand.nextInt(top-bottom)+(bottom);
f=rand.nextInt(4);
g=rand.nextInt(4);
h=rand.nextInt(4);
k=rand.nextInt(4);
switch(f)
{
case 0:
{
d='+';
switch(g)
{
case 0:e='+';break;
case 1:e='-';break;
case 2:e='*';break;
case 3:e='/';break;
}
switch(h)
{
case 0:j='+';break;
case 1:j='-';break;
case 2:j='*';break;
case 3:j='/';break;
}
string1[0]=String.valueOf(a);
string1[1]=String.valueOf(b);
string1[2]=String.valueOf(c);
string1[3]=String.valueOf(z);
if(bracket==1)
{
switch(k)
{
case 0:
{
string1[0]=u+string1[0];
l=rand.nextInt(2)+(2);
string1[l]=string1[l]+v;
}
case 1:
{
string1[1]=u+string1[1];
l=rand.nextInt(1)+(2);
string1[l]=string1[l]+v;
}
case 2:
{
string1[2]=u+string1[2];
l=3;
string1[l]=string1[l]+v;
}
}
string[i]=string1[0]+d+string1[1]+e+string1[2]+j+string1[3];
System.out.println(string[i]);
}
if(bracket==0)
{
string[i]=string1[0]+d+string1[1]+e+string1[2]+j+string1[3];
System.out.println(string[i]);
}
}break;
case 1:
{
d='-';
switch(g)
{
case 0:e='+';break;
case 1:e='-';break;
case 2:e='*';break;
case 3:e='/';break;
}
switch(h)
{
case 0:j='+';break;
case 1:j='-';break;
case 2:j='*';break;
case 3:j='/';break;
}
string1[0]=String.valueOf(a);
string1[1]=String.valueOf(b);
string1[2]=String.valueOf(c);
string1[3]=String.valueOf(z);
if(bracket==1)
{
switch(k)
{
case 0:
{
string1[0]=u+string1[0];
l=rand.nextInt(2)+(2);
string1[l]=string1[l]+v;
}
case 1:
{
string1[1]=u+string1[1];
l=rand.nextInt(1)+(2);
string1[l]=string1[l]+v;
}
case 2:
{
string1[2]=u+string1[2];
l=3;
string1[l]=string1[l]+v;
}
}
string[i]=string1[0]+d+string1[1]+e+string1[2]+j+string1[3];
System.out.println(string[i]);
}
if(bracket==0)
{
string[i]=string1[0]+d+string1[1]+e+string1[2]+j+string1[3];
System.out.println(string[i]);
}
}break;
case 2:
{
d='*';
switch(g)
{
case 0:e='+';break;
case 1:e='-';break;
case 2:e='*';break;
case 3:e='/';break;
}
switch(h)
{
case 0:j='+';break;
case 1:j='-';break;
case 2:j='*';break;
case 3:j='/';break;
}
string1[0]=String.valueOf(a);
string1[1]=String.valueOf(b);
string1[2]=String.valueOf(c);
string1[3]=String.valueOf(z);
if(bracket==1)
{
switch(k)
{
case 0:
{
string1[0]=u+string1[0];
l=rand.nextInt(2)+(2);
string1[l]=string1[l]+v;
}
case 1:
{
string1[1]=u+string1[1];
l=rand.nextInt(1)+(2);
string1[l]=string1[l]+v;
}
case 2:
{
string1[2]=u+string1[2];
l=3;
string1[l]=string1[l]+v;
}
}
string[i]=string1[0]+d+string1[1]+e+string1[2]+j+string1[3];
System.out.println(string[i]);
}
if(bracket==0)
{
string[i]=string1[0]+d+string1[1]+e+string1[2]+j+string1[3];
System.out.println(string[i]);
}
}break;
case 3:
{
d='/';
switch(g)
{
case 0:e='+';break;
case 1:e='-';break;
case 2:e='*';break;
case 3:e='/';break;
}
switch(h)
{
case 0:j='+';break;
case 1:j='-';break;
case 2:j='*';break;
case 3:j='/';break;
}
string1[0]=String.valueOf(a);
string1[1]=String.valueOf(b);
string1[2]=String.valueOf(c);
string1[3]=String.valueOf(z);
if(bracket==1)
{
switch(k)
{
case 0:
{
string1[0]=u+string1[0];
l=rand.nextInt(2)+(2);
string1[l]=string1[l]+v;
}
case 1:
{
string1[1]=u+string1[1];
l=rand.nextInt(1)+(2);
string1[l]=string1[l]+v;
}
case 2:
{
string1[2]=u+string1[2];
l=3;
string1[l]=string1[l]+v;
}
}
string[i]=string1[0]+d+string1[1]+e+string1[2]+j+string1[3];
System.out.println(string[i]);
}
if(bracket==0)
{
string[i]=string1[0]+d+string1[1]+e+string1[2]+j+string1[3];
System.out.println(string[i]);
}
}break;
}
}
}
if(temp==0)
{
for(i=0;i<n;i++)
{
a=rand.nextInt(top-bottom)+(bottom);
b=rand.nextInt(top-bottom)+(bottom);
c=rand.nextInt(top-bottom)+(bottom);
z=rand.nextInt(top-bottom)+(bottom);
f=rand.nextInt(4);
g=rand.nextInt(4);
h=rand.nextInt(4);
k=rand.nextInt(4);
switch(c)
{
case 0:
{
d='+';
switch(g)
{
case 0:e='+';break;
case 1:e='-';break;
}
switch(h)
{
case 0:j='+';break;
case 1:j='-';break;
}
string1[0]=String.valueOf(a);
string1[1]=String.valueOf(b);
string1[2]=String.valueOf(c);
string1[3]=String.valueOf(z);
if(bracket==1)
{
switch(k)
{
case 0:
{
string1[0]=u+string1[0];
l=rand.nextInt(2)+(2);
string1[l]=string1[l]+v;
}
case 1:
{
string1[1]=u+string1[1];
l=rand.nextInt(1)+(2);
string1[l]=string1[l]+v;
}
case 2:
{
string1[2]=u+string1[2];
l=3;
string1[l]=string1[l]+v;
}
}
string[i]=string1[0]+d+string1[1]+e+string1[2]+j+string1[3];
System.out.println(string[i]);
}
if(bracket==0)
{
string[i]=string1[0]+d+string1[1]+e+string1[2]+j+string1[3];
System.out.println(string[i]);
}
}break;
case 1:
{
d='-';
switch(g)
{
case 0:e='+';break;
case 1:e='-';break;
}
switch(h)
{
case 0:j='+';break;
case 1:j='-';break;
}
string1[0]=String.valueOf(a);
string1[1]=String.valueOf(b);
string1[2]=String.valueOf(c);
string1[3]=String.valueOf(z);
if(bracket==1)
{
switch(k)
{
case 0:
{
string1[0]=u+string1[0];
l=rand.nextInt(2)+(2);
string1[l]=string1[l]+v;
}
case 1:
{
string1[1]=u+string1[1];
l=rand.nextInt(1)+(2);
string1[l]=string1[l]+v;
}
case 2:
{
string1[2]=u+string1[2];
l=3;
string1[l]=string1[l]+v;
}
}
string[i]=string1[0]+d+string1[1]+e+string1[2]+j+string1[3];
System.out.println(string[i]);
}
if(bracket==0)
{
string[i]=string1[0]+d+string1[1]+e+string1[2]+j+string1[3];
System.out.println(string[i]);
}
}break;
}
}
}
}
public static void RandomInt5(int n,int bottom,int top,int temp,String string[],int bracket)
{
int a,b,c,z,y,i,f,g,h,l,r,s,t;
char d,e=' ',j=' ',k=' ',u='(',v=')';
String [ ]string1=new String[100];
Scanner scan=new Scanner(System.in);
Random rand=new Random( );
if(temp==1)
{
for(i=0;i<n;i++)
{
a=rand.nextInt(top-bottom)+(bottom);
b=rand.nextInt(top-bottom)+(bottom);
c=rand.nextInt(top-bottom)+(bottom);
z=rand.nextInt(top-bottom)+(bottom);
y=rand.nextInt(top-bottom)+(bottom);
f=rand.nextInt(4);
g=rand.nextInt(4);
h=rand.nextInt(4);
l=rand.nextInt(4);
s=rand.nextInt(5);
switch(f)
{
case 0:
{
d='+';
switch(g)
{
case 0:e='+';break;
case 1:e='-';break;
case 2:e='*';break;
case 3:e='/';break;
}
switch(h)
{
case 0:j='+';break;
case 1:j='-';break;
case 2:j='*';break;
case 3:j='/';break;
}
switch(l)
{
case 0:k='+';break;
case 1:k='-';break;
case 2:k='*';break;
case 3:k='/';break;
}
string1[0]=String.valueOf(a);
string1[1]=String.valueOf(b);
string1[2]=String.valueOf(c);
string1[3]=String.valueOf(z);
string1[4]=String.valueOf(y);
if(bracket==1)
{
switch(s)
{
case 0:
{
string1[0]=u+string1[0];
t=rand.nextInt(3)+(1);
string1[t]=string1[t]+v;
}break;
case 1:
{
string1[1]=u+string1[1];
t=rand.nextInt(2)+(2);
string1[t]=string1[t]+v;
}break;
case 2:
{
string1[2]=u+string1[2];
t=rand.nextInt(1)+(3);
string1[t]=string1[t]+v;
}break;
case 3:
{
string1[3]=u+string1[3];
t=4;
string1[t]=string1[t]+v;
}break;
case 4:
{
}break;
}
string[i]=string1[0]+d+string1[1]+e+string1[2]+j+string1[3]+k+string1[4];
System.out.println(string[i]);
}
if(bracket==0)
{
string[i]=string1[0]+d+string1[1]+e+string1[2]+j+string1[3]+k+string1[4];
System.out.println(string[i]);
}
}break;
case 1:
{
d='-';
switch(g)
{
case 0:e='+';break;
case 1:e='-';break;
case 2:e='*';break;
case 3:e='/';break;
}
switch(h)
{
case 0:j='+';break;
case 1:j='-';break;
case 2:j='*';break;
case 3:j='/';break;
}
switch(l)
{
case 0:k='+';break;
case 1:k='-';break;
case 2:k='*';break;
case 3:k='/';break;
}
string1[0]=String.valueOf(a);
string1[1]=String.valueOf(b);
string1[2]=String.valueOf(c);
string1[3]=String.valueOf(z);
string1[4]=String.valueOf(y);
if(bracket==1)
{
switch(s)
{
case 0:
{
string1[0]=u+string1[0];
t=rand.nextInt(3)+(1);
string1[t]=string1[t]+v;
}break;
case 1:
{
string1[1]=u+string1[1];
t=rand.nextInt(2)+(2);
string1[t]=string1[t]+v;
}break;
case 2:
{
string1[2]=u+string1[2];
t=rand.nextInt(1)+(3);
string1[t]=string1[t]+v;
}break;
case 3:
{
string1[3]=u+string1[3];
t=4;
string1[t]=string1[t]+v;
}break;
case 4:
{
}break;
}
string[i]=string1[0]+d+string1[1]+e+string1[2]+j+string1[3]+k+string1[4];
System.out.println(string[i]);
}
if(bracket==0)
{
string[i]=string1[0]+d+string1[1]+e+string1[2]+j+string1[3]+k+string1[4];
System.out.println(string[i]);
}
}break;
case 2:
{
d='*';
switch(g)
{
case 0:e='+';break;
case 1:e='-';break;
case 2:e='*';break;
case 3:e='/';break;
}
switch(h)
{
case 0:j='+';break;
case 1:j='-';break;
case 2:j='*';break;
case 3:j='/';break;
}
switch(l)
{
case 0:k='+';break;
case 1:k='-';break;
case 2:k='*';break;
case 3:k='/';break;
}
string1[0]=String.valueOf(a);
string1[1]=String.valueOf(b);
string1[2]=String.valueOf(c);
string1[3]=String.valueOf(z);
string1[4]=String.valueOf(y);
if(bracket==1)
{
switch(s)
{
case 0:
{
string1[0]=u+string1[0];
t=rand.nextInt(3)+(1);
string1[t]=string1[t]+v;
}break;
case 1:
{
string1[1]=u+string1[1];
t=rand.nextInt(2)+(2);
string1[t]=string1[t]+v;
}break;
case 2:
{
string1[2]=u+string1[2];
t=rand.nextInt(1)+(3);
string1[t]=string1[t]+v;
}break;
case 3:
{
string1[3]=u+string1[3];
t=4;
string1[t]=string1[t]+v;
}break;
case 4:
{
}break;
}
string[i]=string1[0]+d+string1[1]+e+string1[2]+j+string1[3]+k+string1[4];
System.out.println(string[i]);
}
if(bracket==0)
{
string[i]=string1[0]+d+string1[1]+e+string1[2]+j+string1[3]+k+string1[4];
System.out.println(string[i]);
}
}break;
case 3:
{
d='/';
switch(g)
{
case 0:e='+';break;
case 1:e='-';break;
case 2:e='*';break;
case 3:e='/';break;
}
switch(h)
{
case 0:j='+';break;
case 1:j='-';break;
case 2:j='*';break;
case 3:j='/';break;
}
switch(l)
{
case 0:k='+';break;
case 1:k='-';break;
case 2:k='*';break;
case 3:k='/';break;
}
string1[0]=String.valueOf(a);
string1[1]=String.valueOf(b);
string1[2]=String.valueOf(c);
string1[3]=String.valueOf(z);
string1[4]=String.valueOf(y);
if(bracket==1)
{
switch(s)
{
case 0:
{
string1[0]=u+string1[0];
t=rand.nextInt(3)+(1);
string1[t]=string1[t]+v;
}break;
case 1:
{
string1[1]=u+string1[1];
t=rand.nextInt(2)+(2);
string1[t]=string1[t]+v;
}break;
case 2:
{
string1[2]=u+string1[2];
t=rand.nextInt(1)+(3);
string1[t]=string1[t]+v;
}break;
case 3:
{
string1[3]=u+string1[3];
t=4;
string1[t]=string1[t]+v;
}break;
case 4:
{
}break;
}
string[i]=string1[0]+d+string1[1]+e+string1[2]+j+string1[3]+k+string1[4];
System.out.println(string[i]);
}
if(bracket==0)
{
string[i]=string1[0]+d+string1[1]+e+string1[2]+j+string1[3]+k+string1[4];
System.out.println(string[i]);
}
}break;
}
}
}
if(temp==0)
{
for(i=0;i<n;i++)
{
a=rand.nextInt(top-bottom)+(bottom);
b=rand.nextInt(top-bottom)+(bottom);
c=rand.nextInt(top-bottom)+(bottom);
z=rand.nextInt(top-bottom)+(bottom);
y=rand.nextInt(top-bottom)+(bottom);
f=rand.nextInt(4);
g=rand.nextInt(4);
h=rand.nextInt(4);
l=rand.nextInt(4);
s=rand.nextInt(4);
switch(c)
{
case 0:
{
d='+';
switch(g)
{
case 0:e='+';break;
case 1:e='-';break;
}
switch(h)
{
case 0:j='+';break;
case 1:j='-';break;
}
switch(l)
{
case 0:k='+';break;
case 1:k='-';break;
}
string1[0]=String.valueOf(a);
string1[1]=String.valueOf(b);
string1[2]=String.valueOf(c);
string1[3]=String.valueOf(z);
string1[4]=String.valueOf(y);
if(bracket==1)
{
switch(s)
{
case 0:
{
string1[0]=u+string1[0];
t=rand.nextInt(3)+(1);
string1[t]=string1[t]+v;
}break;
case 1:
{
string1[1]=u+string1[1];
t=rand.nextInt(2)+(2);
string1[t]=string1[t]+v;
}break;
case 2:
{
string1[2]=u+string1[2];
t=rand.nextInt(1)+(3);
string1[t]=string1[t]+v;
}break;
case 3:
{
string1[3]=u+string1[3];
t=4;
string1[t]=string1[t]+v;
}break;
case 4:
{
}break;
}
string[i]=string1[0]+d+string1[1]+e+string1[2]+j+string1[3]+k+string1[4];
System.out.println(string[i]);
}
if(bracket==0)
{
string[i]=string1[0]+d+string1[1]+e+string1[2]+j+string1[3]+k+string1[4];
System.out.println(string[i]);
}
}break;
case 1:
{
d='/';
switch(g)
{
case 0:e='+';break;
case 1:e='-';break;
}
switch(h)
{
case 0:j='+';break;
case 1:j='-';break;
}
switch(l)
{
case 0:k='+';break;
case 1:k='-';break;
}
string1[0]=String.valueOf(a);
string1[1]=String.valueOf(b);
string1[2]=String.valueOf(c);
string1[3]=String.valueOf(z);
string1[4]=String.valueOf(y);
if(bracket==1)
{
switch(s)
{
case 0:
{
string1[0]=u+string1[0];
t=rand.nextInt(3)+(1);
string1[t]=string1[t]+v;
}break;
case 1:
{
string1[1]=u+string1[1];
t=rand.nextInt(2)+(2);
string1[t]=string1[t]+v;
}break;
case 2:
{
string1[2]=u+string1[2];
t=rand.nextInt(1)+(3);
string1[t]=string1[t]+v;
}break;
case 3:
{
string1[3]=u+string1[3];
t=4;
string1[t]=string1[t]+v;
}break;
case 4:
{
}break;
}
string[i]=string1[0]+d+string1[1]+e+string1[2]+j+string1[3]+k+string1[4];
System.out.println(string[i]);
}
if(bracket==0)
{
string[i]=string1[0]+d+string1[1]+e+string1[2]+j+string1[3]+k+string1[4];
System.out.println(string[i]);
}
}break;
}
}
}
}
public static int Exem(String string[ ],String error[ ],int n) throws Exception
{
Scanner scan=new Scanner(System.in);
int i,count=0,j=0,key1,key2,count1;
String key;
for(i=0;i<n;i++)
{
System.out.print(i+1+"、");
System.out.print(string[i]+"=");
key1=scan.nextInt( );
key=getResult(string[i]);
key2=(int)Double.parseDouble(key);
if(key2==key1)
{
System.out.print("回答正确!"+'\n');
count++;
}
else
{
System.out.print("回答错误!"+'\n');
error[j]=string[i];
j++;
}
}
System.out.print("正确率为:"+(float)count/n+'\n');
count1=n-count;
return count1;
}
public static void Reerror(String error[ ],int n,String string[ ]) throws Exception
{
Scanner scan=new Scanner(System.in);
System.out.print("错题如下:"+'\n');
int [] count=new int[100];
String key,temp;
int i,key1,key2,k,magic,choose,l,p,m,bracket;
for(i=0;i<n;i++)
{
count[i]=1;
System.out.print(error[i]+'\n');
}
System.out.print("是否进行错题重练或者做一套新题(1为错题重练,0为做新题,其他为退出):");
choose=scan.nextInt( );
if(choose==1)
{
System.out.print("接下来是错题重练环节:"+'\n');
for(i=0;i<n;i++)
{
System.out.print(i+1+"、");
System.out.println(error[i]+"=");
key1=scan.nextInt( );
key=getResult(error[i]);
key2=(int)Double.parseDouble(key);
while(key2!=key1)
{
System.out.print("回答错误!"+'\n');
count[i]++;
System.out.print(i+1+"、");
System.out.println(error[i]+"=");
key1=scan.nextInt( );
key=getResult(error[i]);
key2=(int)Double.parseDouble(key);
}
System.out.print("回答正确!"+'\n');
}
for(i=0;i<n-1;i++)
{
for(k=i+1;k<n;k++)
{
if(count[k]>count[i])
{
magic=count[k];
count[k]=count[i];
count[i]=magic;
temp=error[k];
error[k]=error[i];
error[i]=temp;
}
}
}
System.out.print("以下是错题记录(多看看错的多的题哦!):"+'\n');
for(i=0;i<n;i++)
{
System.out.print(error[i]+" ");
System.out.println(count[i]);
}
}
if(choose==0)
{
System.out.print("您要出几年级的题(2,3,4年级都有):");
m=scan.nextInt( );
switch(m)
{
case 2:
{
System.out.print("请输入是否需要乘除法(1是需要,0是不需要):");
l=scan.nextInt( );
RandomInt2(m,number,bottom,top,l,string);
System.out.print("以上是所出题目,下面来计算:"+'\n');
p=Exem(string,error,number);
Reerror(error,p,string);
}break;
case 3:
{
System.out.print("请输入是否需要乘除法(1是需要,0是不需要):");
l=scan.nextInt( );
System.out.print("请输入操作数个数(不要超过四个):");
choose=scan.nextInt( );
if(choose==3)
{
RandomInt3(number,bottom,top,l,string,0);
System.out.print("以上是所出题目,下面来计算:"+'\n');
p=Exem(string,error,number);
Reerror(error,p,string);
}
if(choose==2)
{
RandomInt2(number,n,bottom,top,l,string);
System.out.print("以上是所出题目,下面来计算:"+'\n');
p=Exem(string,error,number);
Reerror(error,p,string);
}
if(choose==4)
{
RandomInt4(number,bottom,top,l,string,0);
System.out.print("以上是所出题目,下面来计算:"+'\n');
p=Exem(string,error,number);
Reerror(error,p,string);
}
}break;
case 4:
{
System.out.print("请输入是否需要乘除法(1是需要,0是不需要):");
l=scan.nextInt( );
System.out.print("请输入是否进行括号运算(1进行,0不进行):");
bracket=scan.nextInt( );
System.out.print("请输入操作数个数(不要超过五个):");
choose=scan.nextInt( );
if(choose==3)
{
RandomInt3(number,bottom,top,l,string,bracket);
System.out.print("以上是所出题目,下面来计算:"+'\n');
p=Exem(string,error,number);
Reerror(error,p,string);
}
if(choose==2)
{
RandomInt2(number,n,bottom,top,l,string);
System.out.print("以上是所出题目,下面来计算:"+'\n');
p=Exem(string,error,number);
Reerror(error,p,string);
}
if(choose==4)
{
RandomInt4(number,bottom,top,l,string,bracket);
System.out.print("以上是所出题目,下面来计算:"+'\n');
p=Exem(string,error,number);
Reerror(error,p,string);
}
if(choose==5)
{
RandomInt5(number,bottom,top,l,string,bracket);
System.out.print("以上是所出题目,下面来计算:"+'\n');
p=Exem(string,error,number);
Reerror(error,p,string);
}
}break;
}
}
}
public static void main(String[] args) throws Exception
{
RandomInt( );
}
}
浙公网安备 33010602011771号