9月30日记录

news/2024/9/30 22:24:23

完成了一个能够列出30道四则运算的java程序,
题目要求:乘法不超过四位数,减法大于零,除法结果为整数;
实现可视化界面,并且能够计算得分与计时;

点击查看代码
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.Random;public class MathQuiz2 extends JFrame {private static final int NUM_QUESTIONS = 30;private static final int TIME_LIMIT = 60; // 60 secondsprivate JTextArea questionArea;private JTextField answerField;private JButton submitButton;private JLabel timerLabel;private int currentQuestionIndex = 0;private int score = 0;private Question[] questions;private Timer timer;public MathQuiz2() {setTitle("Math Quiz");setSize(400, 300);setDefaultCloseOperation(EXIT_ON_CLOSE);setLayout(new BorderLayout());questionArea = new JTextArea();questionArea.setEditable(false);questionArea.setLineWrap(true);questionArea.setWrapStyleWord(true);add(new JScrollPane(questionArea), BorderLayout.CENTER);JPanel inputPanel = new JPanel();answerField = new JTextField(10);submitButton = new JButton("提交答案");timerLabel = new JLabel("剩余时间: " + TIME_LIMIT);inputPanel.add(answerField);inputPanel.add(submitButton);inputPanel.add(timerLabel);add(inputPanel, BorderLayout.SOUTH);submitButton.addActionListener(new SubmitAnswerListener());generateQuestions();displayNextQuestion();startTimer();setVisible(true);}private void generateQuestions() {questions = new Question[NUM_QUESTIONS];Random random = new Random();for (int i = 0; i < NUM_QUESTIONS; i++) {int a = random.nextInt(100); // 0-99int b = random.nextInt(100); // 0-99int operation = random.nextInt(4); // 0:加, 1:减, 2:乘, 3:除switch (operation) {case 0: // 加法questions[i] = new Question(a + " + " + b, a + b);break;case 1: // 减法if (a >= b) {questions[i] = new Question(a + " - " + b, a - b);} else {i--; // 重新生成题目}break;case 2: // 乘法int c = random.nextInt(100); // 0-99if (a * b <= 9999) {questions[i] = new Question(a + " * " + b, a * b);} else {i--; // 重新生成题目}break;case 3: // 除法if (b != 0 && a % b == 0) {questions[i] = new Question(a + " / " + b, a / b);} else {i--; // 重新生成题目}break;}}}private void displayNextQuestion() {if (currentQuestionIndex < NUM_QUESTIONS) {questionArea.setText(questions[currentQuestionIndex].getQuestion());answerField.setText("");answerField.requestFocus();} else {endQuiz();}}private void startTimer() {timer = new Timer(1000, new ActionListener() {private int timeLeft = TIME_LIMIT;@Overridepublic void actionPerformed(ActionEvent e) {if (timeLeft > 0) {timeLeft--;timerLabel.setText("剩余时间: " + timeLeft);} else {((Timer) e.getSource()).stop();endQuiz();}}});timer.start();}private void endQuiz() {timer.stop();JOptionPane.showMessageDialog(this, "测验结束!您的得分是: " + score + "/" + NUM_QUESTIONS);System.exit(0);}private class SubmitAnswerListener implements ActionListener {@Overridepublic void actionPerformed(ActionEvent e) {try {int answer = Integer.parseInt(answerField.getText());if (answer == questions[currentQuestionIndex].getAnswer()) {score++;}currentQuestionIndex++;displayNextQuestion();} catch (NumberFormatException ex) {JOptionPane.showMessageDialog(MathQuiz2.this, "请输入有效的数字!");}}}private static class Question {private final String question;private final int answer;public Question(String question, int answer) {this.question = question;this.answer = answer;}public String getQuestion() {return question;}public int getAnswer() {return answer;}}public static void main(String[] args) {SwingUtilities.invokeLater(MathQuiz2::new);}
}
界面显示:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.ryyt.cn/news/66663.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈,一经查实,立即删除!

相关文章

9.28 开发MES系统日志四

今天开发MES系统的流程图以及数据库表,因为对MES系统的不了解,所以先加上了最基本的人员管理以及车间管理等基本表信息。

Connector C++ 连接 MySQL 数据库之增删改查

在 vcpkg 中折腾了 mysql-connector-cpp 8.0 很久,一直连接不上远程数据库,后面查官方文档,mysql-connector-cpp 8.0 好像只支持 MySQL 8.0 以上的数据库,本来想把远程服务器上的 MySQL 升级到 MySQL 8.0,后面发现测试服务器的配置有点拉跨,架不住 MySQL 8.0,但是 vcpkg…

Hadoop 配置hbase

首先要启动hadoop start-dfs.shstart-yarn.sh 查看一下自己的hadoop版本,确保自己下载的hbase与自己的hadoop版本匹配 hadoop version Index of /apache/hbase (tsinghua.edu.cn) 下载hbase 选择倒数第三个下载 下载完成后 进入 /export/server/ 上传压缩包后 完成解压 重命…

.net core elsa工作流程框架源码学习之Pipeline管道的理解

elsa这个框架运用管道来实现切面编程,切面编程的意义我的理解是在于:把业务逻辑和其他与业务不相关的逻辑进行解耦,或者把通用的逻辑:异常处理,日志处理等在不侵入业务逻辑的情况下,服务与这些业务。接下来,详细看看elsa框架的管道是怎么实现的。 主要依靠,下面这个委托…

省前

111由于 Aqr 一直不更新博客,所以只能自己发了

[初中]我学不好语文,还能学好道法吗?

可以 首先放出我在同时期(八下期末)的语文和道法答题卡:看出来了吧,我的字不行 我觉得,道法像是“简单版”的语文 它也有答题模板,但使用的方法差异极大: 在道法中有一种口号类的题目,模板是做法+意义,这时只需根据材料内容,结合所学知识,默写出相关“为什么类”知识…

黄金

黄金这波涨势 要看3-5是否走完

『模拟赛』CSP-S模拟7(更新 T4

『模拟赛记录』CSP-S模拟5Rank 烂A. median 签。 你说得对,但是赛时嗯打 150 行 5k 代码超级分讨过了。 因为容斥做的不好,求总的然后减总会差点东西,所以直接分着加。发现如果中位数在这五个数中不止出现一次那么就会算重,所以分三种大情况考虑。 一,中位数只有一个。那么…