9.22

发布时间 2023-09-22 21:07:43作者: 七安。

一、四则运算题

import java.util.Random;
import java.util.Scanner;

public class cheng {
    public static boolean contains(int num1, int num2, int num3, int[] a1, int[] a2, int[] a3) {
        for (int i = 0; i < a1.length; i++) {
            if ((num1 == a1[i]) && (num2 == a2[i]) && (num3 == a3[i])) {
                return false;
            }
        }
        return true;
    }

    public static boolean time1(long c, long d) {
        if (d - c >= 5000000) {
            System.out.println("时间到,结束答题");
            return false;
        }
        return true;
    }

    public static boolean reduce(int num1, int num2) {
        return num1 >= num2;
    }

    public static boolean division(int num1, int num2) {
        return (num1 >= num2) && (num1 % num2 == 0);
    }

    public static boolean mul(int num1, int num2) {
        double b = 1000.0 / (double) (num1);
        return num2 < b;
    }

    public static int correct(int num1, int num2, int num3) {
        int b = 0;
        switch (num3) {
            case 0 -> {
                b = num1 + num2;
                break;
            }
            case 1 -> {
                b = num1 - num2;
                break;
            }
            case 2 -> {
                b = num1 * num2;
                break;
            }
            case 3 -> {
                b = num1 / num2;
                break;
            }
        }
        return b;
    }

    public static void main(String[] args) {
        int num1, num2, num3;
        int sum = 0;
        int an;
        Random r = new Random();
        Scanner sc = new Scanner(System.in);
        String[] a = new String[4];
        int[] a1 = new int[30];
        int[] a2 = new int[30];
        int[] a3 = new int[30];
        int count = 0;
        boolean f1 = false, f2 = false, f3 = false, f4 = false;
        a[0] = "+";
        a[1] = "-";
        a[2] = "*";
        a[3] = "/";
        long c = System.currentTimeMillis();
        System.out.println("初始时间为:" + c);
        while (count != 30) {
            long d = System.currentTimeMillis();
            num1 = r.nextInt(90) + 10;
            num2 = r.nextInt(90) + 10;
            num3 = r.nextInt(4);
            switch (num3) {
                case 1 -> {
                    f1 = reduce(num1, num2);
                    break;
                }
                case 2 -> {
                    f2 = mul(num1, num2);
                    break;
                }
                case 3 -> {
                    f3 = division(num1, num2);
                    break;
                }
            }
            f4 = contains(num1, num2, num3, a1, a2, a3);
            if (f1 && f2 && f3 && f4) {
                a1[count] = num1;
                a2[count] = num2;
                a3[count] = num3;
                count++;
                System.out.println(count + "、" + num1 + a[num3] + num2 + "=");
                System.out.println("请输入正确答案:");
                an = correct(num1, num2, num3);
                int answer = sc.nextInt();
                System.out.println("倒计时" + (500000 - (System.currentTimeMillis() - c)) / 100 + "秒");
                boolean f5 = time1(c, System.currentTimeMillis());
                if (!f5) {
                    break;
                }
                if (answer == an) {
                    sum++;
                }
            }
        }
        System.out.println("本次一共本次答对题目 " + sum + "道,答错" + (30 - sum) + ",题目通过率为:" + (((sum * 1.0) / (30 * 1.0)) * 100 + "%"));
    }
}

此次实验实现了答题功能,并且规定了时间,如果用户不能在规定时间内答完。那么直接结束,未答的题目将自动视为错题。同时在答完题之后显示我们这次测试的答对题目数以及通过率。

在问题设置上,我们避免了除法上的不能整除现象、乘法上的越界问题、减法上的负数现象。我们下边试验一下功能。