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;
    }
}
    

 

posted @ 2023-09-21 18:16  伐木工熊大  阅读(11)  评论(0)    收藏  举报