packageyunsuan;importjava.util.Scanner;importjavax.script.ScriptEngine;importjavax.script.ScriptEngineManager;importjavax.script.ScriptException;public classSiZeYunSuan3 {private static int correct=0;//获取运算符
public static String getOp(intindex) {
String string= "";switch(index) {case 0:
string= "+";break;case 1:
string= "-";break;case 2:
string= "*";break;case 3:
string= "/";break;
}returnstring;
}//输出界面
public static voidPrint() {
System.out.println("************************");
System.out.println(" 1.参数设置 ");
System.out.println(" 2.小学二年级口算题 ");
System.out.println(" 3.小学三年级口算题 ");
System.out.println(" 4.小学四年级口算题 ");
System.out.println(" 5.错题集 ");
System.out.println("************************");
}//参数设置
public static voidCanshu(ShuZhi sz) {
Scanner con=newScanner(System.in);
System.out.print("请输入题目数量:");
sz.N=con.nextInt();
System.out.print("请输入操作数个数:");
sz.n=con.nextInt();
System.out.print("请输入最大范围:");
sz.max=con.nextInt();
}//生成随机数
public static void Random(int[] number,int[] ope,ShuZhi sz) {for(int i=0;i
number[i]=(int)(Math.random()*sz.max+1);
}for(int j=0;j
ope[j]=(int)(Math.random()*4+0);
}
}//题目生成字符串
public static void Into_str(String[] str,int[] number,int[] ope,ShuZhi sz) {int i=0,j=0;for(int p=0;p
String s1=" ";for(int m=0;m
s1=s1+String.valueOf(number[i])+getOp(ope[j]);
i++;j++;
}
str[p]=s1+String.valueOf(number[i]);
System.out.println(str[p]);
}
}//输出题目
public static voidOutput1(String[] str,ShuZhi sz,String[] mis) {
Scanner con=newScanner(System.in);int j=0;for(int i=0;i
System.out.println("("+(i+1)+")"+str[i]+"=");
String answer1=con.next();if(answer1.equals(Calculate(str[i]))) {
System.out.println("回答正确!");
correct++;
}else{
System.out.println("回答错误!");
mis[j]=str[i];
j++;
}
}
System.out.println("本次做题总数:"+sz.N+" 正确数:"+correct+" 错题数:"+(sz.N-correct)+" 正确率:"+((correct*100)/sz.N)+"%");
}//判断是否重复
public static intjudge(String[] str,ShuZhi sz) {int f=1;for(int i=0;i
}
}returnf;
}//计算结果函数
public staticString Calculate(String s) {
ScriptEngineManager scriptEngineManager= newScriptEngineManager();
ScriptEngine scriptEngine= scriptEngineManager.getEngineByName("nashorn");
String n=s;
String result="";try{
result=String.valueOf(scriptEngine.eval(n));//System.out.println(result);
} catch(ScriptException e) {
e.printStackTrace();
}returnresult;
}/*//计算题目结果
public static void Calculate_timu(String[] str,String[] result,ShuZhi sz) {
for(int i=0;i
result[i]=Calculate(str[i]);
System.out.println(result[i]);
}
}*/
//错题集
public static voidOutput_mis(String[] mis,ShuZhi sz) {
Scanner con=newScanner(System.in);for(int j=0;j
System.out.println("("+(j+1)+")"+mis[j]+"=");
String answer2=con.next();if(answer2.equals(Calculate(mis[j]))) {
System.out.println("回答正确!");
}else System.out.println("回答错误!");
}
}public static voidmain(String[] args) {
ShuZhi sz=newShuZhi();
sz.n=2;
sz.N=30;
sz.max=100;
SiZeYunSuan3 si=newSiZeYunSuan3();int f=1;int[] number=new int[100];int[] ope=new int[100];
String[] str=new String[100];
String[] mis=new String[100];
Canshu(sz);
Random(number,ope,sz);//随机生成数字
Into_str(str,number,ope,sz); //题目生成字符串//f=judge(str,sz);//判断是否重复
Output1(str,sz,mis); //输出判断正误
System.out.println("\n错题集:");
Output_mis(mis,sz);
}
}