Java 上机实践11(组件及事件处理)

(大家好,今天分享的是Java的相关知识,大家可以在评论区进行互动答疑哦~加油!💕)

目录

Plug:程序实现

方法一(记事本)

方法二(IDEA)

实验一:算术测试

一、实验目的

二、实验要求

三、程序代码

  四、实验结果


Plug:程序实现

方法一(记事本)

  1. 新建一个记事本
  2. 输入代码
  3. 另存文件
  4. 更改文件名,名字为public class后的名字+.javaHello.java
  5. 更改保存类型,选择所有文件
  6. 选择编码格式,一般选择ANSI UTF-8(在编译时需加上固定格式-encoding utf-8)(这里我们选择UTF-8)

方法二(IDEA)

  1. 新建java文件
  2. 输入代码
  3. 编译运行

(相较简便一些)

实验一:算术测试

一、实验目的

本实验的目的是让学生学习处理ActionEvent事件。

二、实验要求

编写一个算术测试小软件,用来训练小学生的算术能力。程序由3个类组成,其中Teacher类对象负责给出算术题目,并判断回答者的答案是否正确:ComputerFrame类对象提供的GUI界面看到题目并通过该GUI界面给出题目的答案;MailClass是主类。)。

三、程序代码

ComputerFrame.java

import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;public class ComputerFrame extends JFrame {private Teacher teacher;private JTextField num1Field;private JTextField operatorField;private JTextField num2Field;private JTextField answerField;private JLabel resultLabel;private String[] currentQuestion; // 保存当前题目的数组public ComputerFrame(Teacher teacher) {this.teacher = teacher;setTitle("算术训练");setSize(500, 150);setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);setLocationRelativeTo(null);// 设置布局setLayout(new FlowLayout());// 显示题目框num1Field = new JTextField(5);num1Field.setEditable(false);add(num1Field);operatorField = new JTextField(2);operatorField.setEditable(false);add(operatorField);num2Field = new JTextField(5);num2Field.setEditable(false);add(num2Field);// 用户输入答案框answerField = new JTextField(10);add(answerField);// 获取题目按钮JButton getQuestionButton = new JButton("获取题目");getQuestionButton.addActionListener(new ActionListener() {@Overridepublic void actionPerformed(ActionEvent e) {currentQuestion = getRandomQuestion();num1Field.setText(currentQuestion[0]);operatorField.setText(currentQuestion[1]);num2Field.setText(currentQuestion[2]);resultLabel.setText(""); // 清空结果}});add(getQuestionButton);// 确认答案按钮JButton checkAnswerButton = new JButton("确认答案");checkAnswerButton.addActionListener(new ActionListener() {@Overridepublic void actionPerformed(ActionEvent e) {String userAnswer = answerField.getText();boolean isCorrect = teacher.checkAnswer(currentQuestion, userAnswer);if (isCorrect) {resultLabel.setText("你回答正确");} else if (userAnswer.isEmpty() || !userAnswer.matches("-?\\d+")) {resultLabel.setText("请输入数字字符");} else {resultLabel.setText("你回答错误");}}});add(checkAnswerButton);// 结果显示框resultLabel = new JLabel("");add(resultLabel);setVisible(true);}private String[] getRandomQuestion() {// 根据简单模式或困难模式随机选择int mode = JOptionPane.showOptionDialog(this, "请选择模式", "模式选择", JOptionPane.DEFAULT_OPTION,JOptionPane.INFORMATION_MESSAGE, null, new String[]{"简单模式", "困难模式"}, "简单模式");if (mode == 0) {return teacher.generateSimpleQuestion();  // 简单模式} else {return teacher.generateDifficultQuestion();  // 困难模式}}
}

Teacher.java 

import java.util.Random;public class Teacher {private Random random;public Teacher() {random = new Random();}// 生成简单模式的加减题目public String[] generateSimpleQuestion() {int num1 = random.nextInt(100);int num2 = random.nextInt(100);String operator = random.nextBoolean() ? "+" : "-";return new String[]{String.valueOf(num1), operator, String.valueOf(num2)};}// 生成困难模式的乘除题目public String[] generateDifficultQuestion() {int num1 = random.nextInt(1, 100); // 除数不为0int num2 = random.nextInt(1, 100);String operator = random.nextBoolean() ? "*" : "/";return new String[]{String.valueOf(num1), operator, String.valueOf(num2)};}// 判断答案是否正确public boolean checkAnswer(String[] question, String answer) {int num1 = Integer.parseInt(question[0]);String operator = question[1];int num2 = Integer.parseInt(question[2]);int correctAnswer = 0;switch (operator) {case "+":correctAnswer = num1 + num2;break;case "-":correctAnswer = num1 - num2;break;case "*":correctAnswer = num1 * num2;break;case "/":correctAnswer = num1 / num2;break;}try {int userAnswer = Integer.parseInt(answer);return userAnswer == correctAnswer;} catch (NumberFormatException e) {return false; // 输入的不是数字}}
}

MainClass.java

public class MainClass {public static void main(String[] args) {Teacher teacher = new Teacher();  // 创建老师对象new ComputerFrame(teacher);       // 创建并显示GUI界面}
}

  四、实验结果


(今日分享暂时到此为止啦!为不断努力的自己鼓鼓掌吧🥳。今日文案分享:所有失去的,会以另一种方式归来。)  

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

本地如何启动casdoor

1、下载代码 GitHub - casdoor/casdoor at v1.777.0 下载对应tag的代码,我这里选择的时v1.777.0版本 通过网盘分享的文件:casdoor-1.777.0.zip 链接: https://pan.baidu.com/s/1fPNqyJYeyfZnem_LtEc0hw 提取码: avpd 2、启动后端 1、使用goland编译…

CSDN外链失效3:

参考我之前的博客: 外链失效博客1:随想笔记1:CSDN写博客经常崩溃,遇到外链图片转存失败怎么办_csdn外链图片转存失败-CSDN博客 外链失效博客2:网络随想2:转语雀_md格式转语雀lake格式-CSDN博客 markdown…

Kubernates

kubernates是一个开源的,用于管理云平台中多个主机上的容器化的应用,Kubernetes的目标是让部署容器化的应用简单并且高效(powerful),Kubernetes提供了应用部署,规划,更新,维护的一种机制。 架构…

Pycharm 更改字体大小

更改代码字体的大小 更改软件字体的大小

Ubuntu20.04解决docker安装后is the docker daemon running? 问题

Ubuntu20.04解决docker安装后is the docker daemon running? 问题 问题描述问题分析问题解决 问题描述 docker info后报错 ERROR: Cannot connect to the Docker daemon at unix:///root/.docker/desktop/docker.sock. Is the docker daemon running? errors pretty printi…

四、使用langchain搭建RAG:金融问答机器人--构建web应用,问答链,带记忆功能

经过前面3节完成金融问答机器人基本流程,这章将使用Gradio构建web应用,同时加入memory令提示模板带有记忆的,使用LCEL构建问答链。 加载向量数据库 from langchain.vectorstores import Chroma from langchain_huggingface import HuggingF…

深度学习之超分辨率算法——SRCNN

网络为基础卷积层 tensorflow 1.14 scipy 1.2.1 numpy 1.16 大概意思就是针对数据,我们先把图片按缩小因子照整数倍进行缩减为小图片,再针对小图片进行插值算法,获得还原后的低分辨率的图片作为标签。 main.py 配置文件 from model im…

基于海思soc的智能产品开发(mcu读保护的设置)

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing 163.com】 对于市场上的产品,除了电路之外,软件保护也是非常重要的一个环节。要是自己辛辛苦苦写的软件,被竞争对手轻易地…

Zabbix6.0升级为6.4

为了体验一些新的功能,比如 Webhook 和问题抑制等,升级个小版本。 一、环境信息 1. 版本要求 一定要事先查看官方文档,确认组件要求的版本,否则版本过高或者过低都会出现问题。 2. 升级前后信息 环境升级前升级后操作系统CentOS…

GitLab的卸载与重装

目录 一、GitLab的卸载 二、 GitLab的安装与配置 1. 创建安装目录 2. 安装 3. 使用 3.1 初始化 3.2 创建空白项目 ​编辑 3.3 配置SSH 3.3.1 配置公钥 ​编辑 3.3.2 配置私钥 3.4 配置本地git库 一、GitLab的卸载 1. 停止gitlab sudo gitlab-ctl stop 2. 卸载…

Linux快速入门-Linux的常用命令

Linux的常用命令 1. Linux的终端与工作区1.1 终端概述1.2 切换终端 2. Shell语言解释器2.1 Shell概述 3. 用户登录与身份切换3.1 su 命令3.2 sudo 命令 4. 文件、目录操作命令4.1 pwd 命令4.2 cd 命令4.3 ls 命令4.3.1 ls 指令叠加使用 4.4 mkdir 命令4.5 rmdir 命令4.6 cp 命令…

三、ubuntu18.04安装docker

1.使用默认ubuntu存储库安装docker 更新软件存储库 更新本地软件数据库确保可以访问最新版本。打开终端输入:sudo apt-get update 卸载旧版本的docker 建议继续之前卸载任何旧的docker软件。打开终端输入:sudo apt-get remove docker docker-engine …

【Linux系统编程】:信号(2)——信号的产生

1.前言 我们会讲解五种信号产生的方式: 通过终端按键产生信号,比如键盘上的CtrlC。kill命令。本质上是调用kill()调用函数接口产生信号硬件异常产生信号软件条件产生信号 前两种在前一篇文章中做了介绍,本文介绍下面三种. 2. 调用函数产生信号 2.1 k…

专业电脑数据恢复软件 iFind Data Recovery v9.2.3 绿色便携版

前言 iFinD Data Recovery一款特别实用的数据找回工具,它很厉害,能帮你在SSD硬盘和Windows10系统上找回丢失的数据。而且,它还能深度扫描并恢复各种主流数码相机里的RAW格式照片,速度超快,用起来也很稳定顺畅&#xf…

QT:Widgets中的数据库应用

SQL数据库驱动 pro文件中添加如下一行代码 QT sql widgetsmain.cpp #include <QApplication> #include <QSqlDatabase> #include <QStringList> int main(int argc, char *argv[]) {QApplication a(argc, argv);qDebug() << "Available driver…

AI的进阶之路:从机器学习到深度学习的演变(三)

&#xff08;承接上集&#xff1a;AI的进阶之路&#xff1a;从机器学习到深度学习的演变&#xff08;二&#xff09;&#xff09; 四、深度学习&#xff08;DL&#xff09;&#xff1a;机器学习的革命性突破 深度学习&#xff08;DL&#xff09;作为机器学习的一个重要分支&am…

数据集-目标检测系列 车牌检测识别 数据集 CCPD2019

车牌检测&识别 数据集 CCPD2019 DataBall 助力快速掌握数据集的信息和使用方式&#xff0c;会员享有 百种数据集&#xff0c;持续增加中。 需要更多数据资源和技术解决方案&#xff0c;知识星球&#xff1a; “DataBall - X 数据球(free)” 贵在坚持&#xff01; 数据样…

(2024.12)Ubuntu20.04安装ZED-SDK

一.官网地址 ZED SDK 4.2 - Download | Stereolabs 选择适配版本进行下载 二.安装程序 下载完成后&#xff0c;进入文件目录&#xff0c;打开终端&#xff0c;输入&#xff1a; chmod x ZED_SDK_Ubuntu20_cuda11.8_v4.2.2.zstd.run ./ZED_SDK_Ubuntu20_cuda11.8_v4.2.2.zst…

python coding(二) Pandas 、PIL、cv2

Pandas 一个分析结构化数据的工具集。Pandas 以 NumPy 为基础&#xff08;实现数据存储和运算&#xff09;&#xff0c;提供了专门用于数据分析的类型、方法和函数&#xff0c;对数据分析和数据挖掘提供了很好的支持&#xff1b;同时 pandas 还可以跟数据可视化工具 matplotli…

第十五届蓝桥杯Scratch01月stema选拔赛—排序

排序 具体要求&#xff1a; 1). 点击绿旗&#xff0c;在舞台上出现4张点数不同的扑克牌&#xff0c;牌上的点数是随机的&#xff08;4-9点&#xff09;&#xff0c;如图所示&#xff1b; 完整题目可点击下方链接查看&#xff1a; 排序_scratch_嗨信奥-玩嗨信息奥林匹克竞赛-…