首页 > 其他分享 >10.15

10.15

时间:2024-10-15 23:00:55浏览次数:7  
标签:int question private static answer new 10.15

可以设置题目总数,题目难度在2年级
import java.util.HashSet;
import java.util.Random;
import java.util.Scanner;
import java.util.Set;
import javax.swing.;
import java.awt.
;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class Main extends JFrame {
private static volatile boolean timeUp = false; // 标记时间是否到
private static volatile boolean timedown = false; // 标记是否停止倒计时
private static JLabel timerLabel;// 用于显示倒计时的标签
private static JTextArea questionArea;// 用于显示当前的问题
private static JTextField answerField;//答案的文本框
private static JButton submitButton; //用户输入的答案
private static int currentQuestion = 0;//
private static int correct = 0;//正确题目
private static int wrong = 0;//错误题目
private static String[] questionStrings;
private static int[] answers;
private QuestionsManager questionsManager;
private QuestionsManager1 questionsManager1;
private static void countdown(int seconds) {
try {
while (seconds > 0 && !timedown) {
Thread.sleep(1000); // 每1秒更新一次
seconds--;
timerLabel.setText("剩余时间: " + seconds + " 秒");
}
if (!timedown) {
timeUp = true; // 时间到,设置标记
}
} catch (InterruptedException e) {
Thread.currentThread().interrupt();
}
timerLabel.setText("剩余时间:"+seconds+"秒");
}
public Main() {
questionsManager = new QuestionsManager();
setTitle("十分钟内完成数学题"); // 设置窗口标题
setSize(400, 400); // 设置窗口大小
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); // 设置关闭操作
setLocationRelativeTo(null); // 设置窗口在屏幕中间
// Initialize components
timerLabel = new JLabel("剩余时间: 600 秒", SwingConstants.CENTER);
questionArea = new JTextArea();
questionArea.setEditable(false); // 使问题区域不可编辑
answerField = new JTextField();
submitButton = new JButton("提交答案");

    // Layout setup
    setLayout(new BorderLayout());
    add(timerLabel, BorderLayout.NORTH);
    add(new JScrollPane(questionArea), BorderLayout.CENTER);
    add(answerField, BorderLayout.SOUTH);
    add(submitButton, BorderLayout.EAST);

    submitButton.addActionListener(new SubmitButtonListener());

    String input = JOptionPane.showInputDialog(this, "请输入要回答的题目数");
    int A = 0;

    try {
        A = Integer.parseInt(input); // 尝试将输入转换为整数
        setupQuestions(A); // 调用设置问题的函数
    } catch (NumberFormatException e) {
        JOptionPane.showMessageDialog(this, "请输入一个有效的整数!", "输入错误", JOptionPane.ERROR_MESSAGE);
        System.exit(0); // 输入无效时退出程序
    }

    // Start countdown thread
    Thread countdownThread = new Thread(() -> countdown(600)); // 600秒倒计时
    countdownThread.start();
}

private void setupQuestions(int A) {
    Random random = new Random();
    Set<String> questions = new HashSet<>();
    answers = new int[A]; // 存储正确答案
    questionStrings = new String[A]; // 存储题目字符串
    int a, b, c;
    // Generate questions
    for (int j = 0; j < A; ) {
        a = random.nextInt(100);
        b = random.nextInt(100);
        c = random.nextInt(4);
        String question = "";
        int answer = 0;
        switch (c) {
            case 0: // 加法
                question = a + "+" + b + "=";
                answer = a + b;
                break;
            case 1: // 减法
                if (a >= b) {
                    question = a + "-" + b + "=";
                    answer = a - b;
                } else {
                    continue;
                }
                break;
            case 2: // 乘法
                if (a * b < 1000) {
                    question = a + "*" + b + "=";
                    answer = a * b;
                } else {
                    continue;
                }
                break;
            case 3: // 除法
                if (a != 0 && b % a == 0) {
                    question = b + "/" + a + "=";
                    answer = b / a;
                } else {
                    continue;
                }
        }

        if (questions.add(question)) {
            questionStrings[j] = question; // 存储题目
            answers[j] = answer; // 存储答案
            j++;
        }
    }

    // Load the first question
    loadQuestion();
}

private void loadQuestion() {
    if (currentQuestion < questionStrings.length) {
        questionArea.setText(questionStrings[currentQuestion]);
        answerField.setText(""); // Clear previous answer
        answerField.requestFocus(); // Focus on answer field
    } else {
        endQuiz(); // No more questions, end quiz
    }
}

private void endQuiz() {
    // End the quiz
    timedown = true;
    JOptionPane.showMessageDialog(this, "答题结束!\n正确答案数量: " + correct + "\n错误答案数量: " + wrong + "\n正确率: " + String.format("%.2f%%", ((double)correct / (correct + wrong)) * 100), "结果", JOptionPane.INFORMATION_MESSAGE);
    System.exit(0); // Close the application
}

private class SubmitButtonListener implements ActionListener {
    @Override
    public void actionPerformed(ActionEvent e) {
        if (timeUp) {
            endQuiz(); // Time is up, end the quiz
            return;
        }
        try {
            int answer = Integer.parseInt(answerField.getText());
            if (answer == answers[currentQuestion]) {
                correct++; // 答对了
            } else {
                wrong++; // 答错了
            }
        } catch (NumberFormatException ex) {
            wrong++; // Invalid input counts as wrong
            JOptionPane.showMessageDialog(Main.this, "无效输入,请输入数字。", "无效输入", JOptionPane.WARNING_MESSAGE);
        }
        currentQuestion++; // Move to the next question
        loadQuestion(); // Load the next question
    }
}
public static void main(String[] args) {
    SwingUtilities.invokeLater(() -> {
        Main mainFrame = new Main();
        mainFrame.setVisible(true); // 显示窗口
    });
}

}

标签:int,question,private,static,answer,new,10.15
From: https://www.cnblogs.com/dahais4c/p/18468718

相关文章

  • 10.15课程内容总结
    这节课以教育者的角度去了解AI,用AI去辅助教师更好、更便捷地教学。大语言模型是AI发展的最成果之一,其中包括:1、生成人工智能(AI-GeneratedContent)2、大语言模型(LargeLanguageModel,LLM)3、ChatGPT(gpt-GenerativePre-trainedTransformer)PPT辅助:1、MINDSHOW:https://www.......
  • 10.15日
    1.上层界面设计(UI设计)Swing提供了多个组件(如按钮、标签、文本框等),通过这些组件,你可以构建用户可视化交互的界面。关键组件JFrame:代表主窗口,所有其他组件都放置在JFrame中。JPanel:用于分隔不同的UI区域,可以嵌套使用。JButton、JLabel、JTextField:分别用于创建按钮、文......
  • 10.15
    学习了如何在JavaWeb项目中进行数据库连接操作。通过JDBC连接数据库,执行SQL查询语句获取数据。importjava.sql.Connection;importjava.sql.DriverManager;importjava.sql.ResultSet;importjava.sql.Statement;publicclassDatabaseAccessExample{publicstatic......
  • 2024.10.15 模拟赛
    2024.10.15模拟赛T1count简要题意给定一个长度为\(n\)的数组求其中正整数数量,\(n≤100\)solution哇,还是太难了输入的时候如果是正数就cnt++输出\(cnt\)即可人机题,不放代码了T2sigma简要题意给定\(n\)个双端队列,其中第\(i\)个队列内有\(c_i\)个整数元素。......
  • 2024.10.15 比赛反思
    2024.10.15比赛反思其实我觉得有好几次我差一点就要写反思了,但是由于运气最后没有写(最极限的一次是倒数第五)。但是终究还是逃不过啊。首先是\(T1\)还比较正常,用了大概\(50\min\),没有浪费太多时间,这点比较好。但是后面就开始出现问题了。\(T2\)是一个网格图上的问题,其实感......
  • 总结 2024.10.15
    放链接考试总结忘记了pwp后面一定都写ATDPcontest近期主线,在补dpabc370f题解思维题,暂时没怎么写有点鸽,补完dp再补晚自习晚自习again组合数学训练......
  • 24.10.15
    谁家好人往NOIp模拟赛里塞CF*3500啊。A考察\(x\)与\(<x\)的点的连边。\[\begin{aligned}&x|(y+n)\\&kx=y+n\\&y=kx-n\\&\because0<y<x\len\\&\thereforey只有1个\\\Rightarrow&k=\left\lceil\frac{......
  • 10.15
    一、测试思维的练习面试题:(1)你说下淘宝购物车的测试点?(2)给你二维码你会怎么去测试?(3)微信发朋友圈如何测试?(4)微信点赞如何测试?(5)给你一个水杯你会如何去测试?(6)你说下电梯的测试点?需求文档,功能,性能,兼容性,安全性,易用性从不同的角度去考虑如何测试?(1)需求测试需求:需求文档,......
  • 10.15
    A.小ω的距离经典数据随机,期望每次减少一半,直接暴力往前跳就行。B.小ω的匹配读懂题了就很简单了,容易发现每行只有前\(m\)个数有用,于是我们得到一个\(m\timesm\)的网格,第\(i\)行选择一个数\(j\),使得这\(m\)个前缀的并等于这\(m\)个数的并,并且并集集合大小为\(......
  • 2024.10.15人工智能学记3
    老师先讲了AI的定义:人工智能(AI)是计算机科学的一个分支,致力于创造能够模仿人类智能行为的机器或系统。这与教育学中的"智能”概念有些相似,但范围更广,包括感知、学习、推理、问题解决等能力。以及如何从教育者角度来理解AI?①规则基础系统-教学大纲和课程设置;机器学习-学生通过练......