java随机生成数学算式

生成随机数学算式可谓是计算机领域的一个经典的问题,

本文使用JFrame,JButton,JTextField等java图形化工具,生成一个可以随机切换题目,可以实现计时功能的一个图形化界面

源代码展示

randomMath类

package login;import javax.swing.*;
import java.awt.*;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.util.ArrayList;
import java.util.Random;//Author:XYu1230
//Time:2024/10/10public class randomMath extends JFrame implements MouseListener {ArrayList<Integer> ans = new ArrayList<>(30);ArrayList<JTextField> res = new ArrayList<>();JButton pd = new JButton("查看评分");JButton jb1 = new JButton("切换题目");JButton jb2 = new JButton("计时功能");JFrame time = new JFrame();JTextField inputTime = new JTextField();JButton jb3 = new JButton("确认");// 程序主体代码public randomMath(){initJFrame();initView();this.setVisible(true);}public void calculateScore(){int score = 0;for (int i = 0; i < ans.size(); i++) {if(ans.get(i).toString().equals(res.get(i).getText())){score++;}}double accuracy = score*1.0 / 20;String text = "错题数:" + (20 - score) + "\n" +"      你的正确率为:" + accuracy ;//        String s = "SELECT t.*\n" +
//                "     FROM lxy.user t\n" +
//                "     LIMIT 501"showJDialog(text);}public void testTimer(long t){MyTimer timer = new MyTimer();timer.schedule(new Runnable() {@Overridepublic void run() {//System.out.println("666666");calculateScore();}},t);}public void initView() {this.getContentPane().removeAll();for (int i = 1; i <= 5; i++) {for (int j = 1; j <= 4; j++) {JLabel j1 = new JLabel(rMath());JTextField result = new JTextField();result.setBounds(i*150+50,j*80,80,30);j1.setBounds(i*150,j*80,80,30);this.getContentPane().add(j1);this.getContentPane().add(result);res.add(result);}}pd.setBounds(450,400,120,30);Font font = new Font("Serif",Font.BOLD,20);pd.setFont(font);this.getContentPane().add(pd);pd.addMouseListener(this); //添加鼠标监听jb1.setBounds(10,500,120,30);this.getContentPane().add(jb1);jb1.addMouseListener(this);jb2.setBounds(10,450,120,30);this.getContentPane().add(jb2);jb2.addMouseListener(this);System.out.println("-------------");for (int i = 0; i < ans.size(); i++) {System.out.println(ans.get(i));}this.getContentPane().repaint();}public void initJFrame() {this.setSize(1000, 600);//设置宽高this.setTitle("20道随机计算题");//设置标题this.setDefaultCloseOperation(3);//设置关闭模式this.setLocationRelativeTo(null);//居中this.setAlwaysOnTop(true);//置顶this.setLayout(null);//取消内部默认布局}//设置弹窗public void showJDialog(String content) {//创建一个弹框对象JDialog jDialog = new JDialog();//给弹框设置大小jDialog.setSize(500, 200);//让弹框置顶jDialog.setAlwaysOnTop(true);//让弹框居中jDialog.setLocationRelativeTo(null);//弹框不关闭永远无法操作下面的界面jDialog.setModal(true);//创建Jlabel对象管理文字并添加到弹框当中JLabel warning = new JLabel(content);warning.setBounds(0, 0, 200, 150);jDialog.getContentPane().add(warning);//让弹框展示出来jDialog.setVisible(true);}//生成算式public String rMath(){Random r = new Random();Character[] chArr = {'+','-','*','/'};int first,second;char c;int index = 0;while(true){first = r.nextInt(100);second = r.nextInt(99)+1;c = chArr[r.nextInt(4)];if(c == '/' && first % second != 0) continue;else if(c == '*' && first * second > 999) continue;else if(c == '-' && first - second < 0) continue;else {if(c == '+') ans.add(first + second);else if(c == '-') ans.add(first - second);else if(c == '*') ans.add(first * second);else if(c == '/') ans.add(first / second);break;}}String s = (first +""+ c+ "" + second + " = ").toString();return s;}public void initTimeSet(){time.setSize(500, 300);//设置宽高time.setTitle("计时设置");//设置标题time.setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);//设置关闭模式time.setLocationRelativeTo(null);//居中time.setAlwaysOnTop(true);//置顶time.setLayout(null);//取消内部默认布局inputTime.setBounds(150,100,200,30);time.getContentPane().add(inputTime);JLabel jl1 = new JLabel("定时时间");jl1.setBounds(100,100,80,30);time.getContentPane().add(jl1);jb3.setBounds(180,200,80,30);time.getContentPane().add(jb3);jb3.addMouseListener(this);time.setVisible(true);}@Overridepublic void mouseClicked(MouseEvent e) {if(e.getSource() == pd){calculateScore();}else if(e.getSource() == jb1){ans.clear();res.clear();System.out.println(ans);initView();}else if(e.getSource() == jb2){initTimeSet();}else if(e.getSource() == jb3){String text = inputTime.getText();testTimer(Long.parseLong(text));showJDialog("计时开始");time.setVisible(false);}}@Overridepublic void mousePressed(MouseEvent e) {}@Overridepublic void mouseReleased(MouseEvent e) {}@Overridepublic void mouseEntered(MouseEvent e) {}@Overridepublic void mouseExited(MouseEvent e) {}
}
测试类
package login;import java.sql.Time;
import java.util.TimerTask;public class randomMathTest {public static void main(String[] args) {new randomMath();}
}

测试结果展示

麻烦点个赞吧~

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

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

相关文章

运筹说 第126期 | 存储论经典例题讲解——随机存储模型

通过上一期&#xff0c;我们已经学习了确定型存储论模型在经济管理中的应用&#xff0c;但其忽略了现实中的随机性和不确定性因素&#xff0c;本期小编选择了一些考虑不确定因素的随机存储模型的典型例题&#xff0c;进行详细讲解。 单周期的随机型存储模型 单周期的随机型存储…

基于STM32的“Flash闪存”基础 及 “SD NAND Flash”测试例程

文章目录 一、“FLASH闪存”是什么&#xff1f; 简介 分类 特点 虚拟化 二、SD NAND Flash 概述 引脚分配 数据传输模式 SD NAND寄存器 通电图 参考设计 三、STM32测试例程 本篇除了对flash闪存进行简单介绍外&#xff0c;另给读者推荐一种我本人也在用的小容量闪…

STM32 USB CUBEMX

开发背景 使用的平台&#xff1a;STM32H750 注意事项 时钟必须是48MHZ&#xff0c;其它都不行 2. 将默认任务的堆栈设大一点 如果使用操作系统&#xff0c;USB任务跑在默认任务里&#xff0c;因此需要设置默认任务的堆栈缓存是直接定义的全局变量&#xff0c;需要设置编译器…

【windows Server 2012】把我的电脑放在桌面

WinR 打开命令输入框 输入 rundll32.exe shell32.dll,Control_RunDLL desk.cpl,,0

Vue+Vant实现7天日历展示,并在切换日期时实时变换

效果图&#xff1a; 主要使用 moment.js 插件完成 HTML部分 <div class"day-content"><div class"day-content-t"><div>{{ monthVal }}</div><div click"onCalendar()">更多>></div></div><…

月入8.3K,电子厂普工转行网优,每个人都可以是潜力股!

今天主人公只有22岁&#xff0c;大专学历&#xff0c;毕业之后一直在芯片厂从事流水线工作&#xff0c;枯燥烦闷的生活让他下定决心转行&#xff0c;目前收到一份薪资8300元的offer&#xff0c;让我们一起来看看他的故事~ 1 为什么选择网优行业&#xff1f; 大学我学的软件技术…

DAY6 面向对象

概念 对象是一种特殊的数据结构&#xff0c;可以用来记住一个事物的数据&#xff0c;从而代表该事物&#xff0c;可以理解为一个模板表&#xff0c;总而言之万物皆对象&#xff0c;比如一个人、一个物体等。 怎么创建对象 先设计对象的模板&#xff0c;也就是对象的设计图&a…

影视飓风全平台下架引思:录屏分辨率与码率科普及实用软件推荐

在影视飓风10月8日发布视频《清晰度不如4年前!视频变糊是你的错觉吗》后&#xff0c;引发了很多关于视频清晰度的讨论。 有知乎用户总结提出现在在线视频被降画质的几个点&#xff1a;一是原始视频上传到服务器就被压缩&#xff0c;虽分辨率看似不变&#xff0c;但如 H.265 等高…

【SQL】收入更高的员工

目录 语法 需求 示例 分析 代码 语法 FROM Employee a, Employee b 两个表之间笛卡尔积&#xff08;Cartesian product&#xff09;的形式&#xff0c;用了逗号分隔的连接&#xff08;comma-separated join&#xff09;&#xff0c;这是早期SQL语法中用于连接表的一种方式…

TikTok 伪装度分析:揭开社交媒体的真实面纱

在现代社交媒体中&#xff0c;TikTok凭借其短视频的形式和算法推荐的机制&#xff0c;迅速吸引了大量用户。然而&#xff0c;随着用户基数的扩大&#xff0c;平台上的内容呈现出多样化的趋势&#xff0c;而“伪装度”这一概念也逐渐成为我们分析TikTok内容质量和用户行为的重要…

SpringBoot使用esayExcel根据模板导出excel

1、依赖 <dependency><groupId>com.alibaba</groupId><artifactId>easyexcel</artifactId><version>3.1.3</version></dependency> 2、模板 3、实体类 package com.skybird.iot.addons.productionManagement.qualityTesting…

泰始明昌文旅:如何打造真正的文旅爆品体系

泰始明昌文旅&#xff1a;如何打造真正的文旅爆品体系 泰始明昌文旅&#xff1a;如何打造真正的爆品体系 关键词&#xff1a;泰始明昌文旅,文旅爆品,核心卖点,用户痛点,项目特点,对手弱点,爆品体系,爆品品类,结构化,品质,价值链接,生态体系,营销推广,持续创新 摘要&#xff…

接口和多态

接口 概念 接口是功能的集合&#xff0c;它同样是一种引用数据类型&#xff0c;可以把接口看作抽象类更为抽象的 "类"。 接口只描述所应该具备的功能方法&#xff0c;但是没有具体的方法实现&#xff0c;即接口中具有的都是抽象方法&#xff0c;这些抽象方法的实现是…

美发店业务流程优化:SpringBoot管理系统

2相关技术 2.1 MYSQL数据库 MySQL是一个真正的多用户、多线程SQL数据库服务器。 是基于SQL的客户/服务器模式的关系数据库管理系统&#xff0c;它的有点有有功能强大、使用简单、管理方便、安全可靠性高、运行速度快、多线程、跨平台性、完全网络化、稳定性等&#xff0c;非常…

Java | Leetcode Java题解之第468题验证IP地址

题目&#xff1a; 题解&#xff1a; class Solution {public String validIPAddress(String queryIP) {if (queryIP.indexOf(.) > 0) {// IPv4int last -1;for (int i 0; i < 4; i) {int cur (i 3 ? queryIP.length() : queryIP.indexOf(., last 1));if (cur <…

汽车3d动效的作用!云渲染实现3d动效

在汽车营销领域&#xff0c;3D动效技术以其独特的视觉冲击力和交互体验&#xff0c;正成为吸引消费者注意力的新利器。而云渲染技术的应用&#xff0c;更是让这些动效如虎添翼&#xff0c;实现了高效、低成本的3D视觉内容制作与分享。本文将探讨汽车3D动效的作用&#xff0c;并…

java中的I/O(8个案例+代码+效果图)

目录 1.File类 1&#xff09;常用构造方法 1&#xff09;File(String pathname) 2&#xff09;File(String parent, String child) 3&#xff09;File(File parent, String child) 2&#xff09;常用方法 1&#xff09;boolean canRead() 2&#xff09;boolean canWrite() 3&am…

SiLM266x系列SiLM2661高压电池组前端充/放电高边NFET驱动器 为电池系统保护提供可靠性和设计灵活性

SiLM2661产品概述&#xff1a; SiLM2661能够灵活的应对不同应用场景对锂电池进行监控和保护的需求&#xff0c;为电池系统保护提供可靠性和设计灵活性。是用于电池充电/放电系统控制的低功耗、高边 N 沟道 FET 驱动器&#xff0c;高边保护功能可避免系统的接地引脚断开连接&am…

Linux云计算 |【第四阶段】RDBMS2-DAY2

主要内容&#xff1a; 数据读写分离概述、Maxscale实现数据读写分离、多实例配置、中间件概述 一、数据读写分离概述 数据读写分离&#xff08;Read/Write Splitting&#xff09;是一种数据库架构设计模式&#xff0c;旨在提高数据库系统的性能、可扩展性和可用性。通过将读操…

how to increase the height of the ps or cdm window

when the line reaches the bottom; directly pull up the top bar of the window after pulling down the bar