2023/09/21
四则运算升级版
增加倒计时和一些题目限制,实时答题功能
package 课堂测试; import java.util.Random; import java.util.Scanner; public class 四则运算 { static int[] a=new int[30]; static int[] b=new int[30]; static int[] c=new int[30]; static boolean err[]=new boolean[30]; public static void main(String[] args) { int x=answer(); System.out.println("正确率"+(x/30.0*100)+"%"); System.out.println("你的错题数为:"+(30-x)); printerr(); } public static void printerr() { System.out.println("你的错题为:"); for(int i=0;i<30;i++) { if(err[i]) { System.out.print(a[i]); switch(b[i]) { case 0: System.out.print("+"); System.out.println(c[i]+"="+(a[i]+c[i])); break; case 1: System.out.print("-"); System.out.println(c[i]+"="+(a[i]-c[i])); break; case 2: System.out.print("*"); System.out.println(c[i]+"="+(a[i]*c[i])); break; case 3: System.out.print("/"); System.out.println(c[i]+"="+(a[i]/c[i])); break; } } } } public static boolean multify(int i,int j) { if(i*j<1000) { return true; } return false; } public static boolean divide(int i,int j) { if(i%j==0) { return true; } return false; } public static boolean minus(int i,int j) { if(i-j>=0) { return true; } return false; } public static boolean judge(int x,int y,int w,int n) { for(int i=0;i<n;i++) { if(x==a[i]&&y==b[i]&&w==c[i]) { return false; } } return true; } public static int answer() { Scanner sc=new Scanner(System.in); Random rd=new Random(); int n=0;//出题记数 int m=0;//正确题目数目 System.out.println("请输入你需要的使时间"); long time=sc.nextInt(); long startTime = System.currentTimeMillis(); while(n<30) { int x=rd.nextInt(100); int way=rd.nextInt(100); int y=rd.nextInt(100); way=way%4; switch(way) { case 0: if(judge(x,0,y,n)) { System.out.print((n+1)+"、 "); System.out.print(x+" "); System.out.print("+ "); System.out.print(y+"="); a[n]=x; b[n]=0; c[n]=y; int ans0=sc.nextInt(); long endTime = System.currentTimeMillis(); long w=(endTime-startTime)/1000; if(x+y==ans0&&w<time) { System.out.println("剩余时间"+(time-w)+"s"); m++; }else { if(w>time) System.out.println("时间到,你之后回答的所有题目将都算错误"); else System.out.println("剩余时间"+(time-w)+"s"); System.out.println("回答错误"); err[n]=true; } n++; } break; case 1: if(minus(x,y)&&judge(x,1,y,n)) { System.out.print((n+1)+"、 "); System.out.print(x+" "); System.out.print("- "); System.out.print(y+"="); a[n]=x; b[n]=1; c[n]=y; int ans1=sc.nextInt(); long endTime = System.currentTimeMillis(); long w=(endTime-startTime)/1000; if(x-y==ans1&&w<time) { m++; System.out.println("剩余时间"+(time-w)+"s"); }else { if(w>time) System.out.println("时间到,你之后回答的所有题目将都算错误"); else System.out.println("剩余时间"+(time-w)+"s"); System.out.println("回答错误"); err[n]=true; } n++; } break; case 2: if(multify(x,y)&&judge(x,2,y,n)) { System.out.print((n+1)+"、 "); System.out.print(x+" "); System.out.print("* "); System.out.print(y+"="); a[n]=x; b[n]=2; c[n]=y; int ans2=sc.nextInt(); long endTime = System.currentTimeMillis(); long w=(endTime-startTime)/1000; if(x*y==ans2&&w<time) { m++; System.out.println("剩余时间"+(time-w)+"s"); }else { if(w>time) System.out.println("时间到,你之后回答的所有题目将都算错误"); else System.out.println("剩余时间"+(time-w)+"s"); System.out.println("回答错误"); err[n]=true; } n++; } break; case 3: if(divide(x,y)&&judge(x,3,y,n)) { System.out.print((n+1)+"、 "); System.out.print("/ "); System.out.print(y+"="); a[n]=x; b[n]=3; c[n]=y; int ans3=sc.nextInt(); long endTime = System.currentTimeMillis(); long w=(endTime-startTime)/1000; if(x/y==ans3&&w<time) { m++; System.out.println("剩余时间"+(time-w)+"s"); } else { if(w>time) System.out.println("时间到,你之后回答的所有题目将都算错误"); else System.out.println("剩余时间"+(time-w)+"s"); System.out.println("回答错误"); err[n]=true; } n++; } break; } } return m; } }