小学算术运算测试程序java_Java实现小学四则运算练习系统(UI)

时间: 2024-01-05 12:03:35 浏览: 38
以下是一个简单的小学四则运算练习系统的Java实现,带有UI界面: ```java import java.awt.BorderLayout; import java.awt.Color; import java.awt.FlowLayout; import java.awt.Font; import java.awt.GridLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.util.Random; import javax.swing.BorderFactory; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.JTextField; public class ArithmeticPractice extends JFrame implements ActionListener { private static final long serialVersionUID = 1L; private JLabel num1Label, num2Label, operatorLabel, resultLabel, feedbackLabel; private JTextField resultField; private JButton submitButton, nextButton, quitButton; private JPanel questionPanel, inputPanel, buttonPanel; private Random random = new Random(); private int num1, num2, result, operator; public ArithmeticPractice() { super("小学四则运算练习系统"); // 初始化题目 generateQuestion(); // 初始化UI组件 num1Label = new JLabel(Integer.toString(num1)); num2Label = new JLabel(Integer.toString(num2)); operatorLabel = new JLabel(getOperatorSymbol(operator)); resultLabel = new JLabel("="); feedbackLabel = new JLabel(" "); num1Label.setFont(new Font("Arial", Font.BOLD, 48)); num2Label.setFont(new Font("Arial", Font.BOLD, 48)); operatorLabel.setFont(new Font("Arial", Font.BOLD, 48)); resultLabel.setFont(new Font("Arial", Font.BOLD, 48)); feedbackLabel.setFont(new Font("Arial", Font.BOLD, 24)); resultField = new JTextField(5); resultField.setFont(new Font("Arial", Font.BOLD, 48)); submitButton = new JButton("提交"); nextButton = new JButton("下一题"); quitButton = new JButton("退出"); submitButton.addActionListener(this); nextButton.addActionListener(this); quitButton.addActionListener(this); questionPanel = new JPanel(new FlowLayout()); questionPanel.add(num1Label); questionPanel.add(operatorLabel); questionPanel.add(num2Label); questionPanel.add(resultLabel); inputPanel = new JPanel(new FlowLayout()); inputPanel.add(resultField); buttonPanel = new JPanel(new GridLayout(1, 3)); buttonPanel.add(submitButton); buttonPanel.add(nextButton); buttonPanel.add(quitButton); JPanel feedbackPanel = new JPanel(new FlowLayout()); feedbackPanel.add(feedbackLabel); JPanel contentPanel = new JPanel(new BorderLayout()); contentPanel.setBorder(BorderFactory.createEmptyBorder(20, 20, 20, 20)); contentPanel.add(questionPanel, BorderLayout.NORTH); contentPanel.add(inputPanel, BorderLayout.CENTER); contentPanel.add(buttonPanel, BorderLayout.SOUTH); contentPanel.add(feedbackPanel, BorderLayout.PAGE_END); setContentPane(contentPanel); setSize(600, 300); setLocationRelativeTo(null); } private void generateQuestion() { num1 = random.nextInt(100) + 1; num2 = random.nextInt(100) + 1; operator = random.nextInt(4); switch (operator) { case 0: result = num1 + num2; break; case 1: result = num1 - num2; break; case 2: result = num1 * num2; break; case 3: result = num1 / num2; num1 = result * num2; // 保证除法结果是整数 break; } } private String getOperatorSymbol(int operator) { switch (operator) { case 0: return "+"; case 1: return "-"; case 2: return "×"; case 3: return "÷"; default: return ""; } } private void checkAnswer() { try { int answer = Integer.parseInt(resultField.getText()); if (answer == result) { feedbackLabel.setForeground(Color.GREEN); feedbackLabel.setText("回答正确!"); } else { feedbackLabel.setForeground(Color.RED); feedbackLabel.setText("回答错误,正确答案是:" + result); } } catch (NumberFormatException e) { feedbackLabel.setForeground(Color.RED); feedbackLabel.setText("请输入一个整数!"); } } @Override public void actionPerformed(ActionEvent e) { if (e.getSource() == submitButton) { checkAnswer(); } else if (e.getSource() == nextButton) { generateQuestion(); num1Label.setText(Integer.toString(num1)); num2Label.setText(Integer.toString(num2)); operatorLabel.setText(getOperatorSymbol(operator)); feedbackLabel.setText(""); resultField.setText(""); resultField.requestFocus(); } else if (e.getSource() == quitButton) { System.exit(0); } } public static void main(String[] args) { ArithmeticPractice app = new ArithmeticPractice(); app.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); app.setVisible(true); } } ``` 这个程序使用了Java Swing库实现了一个简单的UI界面。每次打开程序会随机生成一道题目,你需要在文本框中输入你的答案,然后点击“提交”按钮进行检查。如果答案正确,会在下方的反馈栏中显示“回答正确!”,否则会显示正确答案。点击“下一题”按钮会生成新的题目,点击“退出”按钮可以退出程序。

相关推荐

最新推荐

recommend-type

用Python做的数学四则运算_算术口算练习程序(后添加减乘除)

主要介绍了用Python做的数学四则运算_算术口算练习程序(后添加减乘除),需要的朋友可以参考下
recommend-type

编译原理——无符号数的算术四则运算语义处理程序实现

对实验一进行扩展,对识别的无符号数进行计值,并将输出形式改为(类别码,值)的二元式形式。 对实验二进行扩展,计算并输出算术表达式的值。...如果不是无符号数的算术四则运算,输出“非法四则运算表达式”。
recommend-type

C语言课程设计报告 代码 小学算术运算测试

这是本人的一份课程设计,关于小学算术运算测试的。上面有代码,分享给各位,仅供参考。
recommend-type

实验三 无符号数的算术四则运算语义处理程序实现

这是编译原理课上做的一个实验,是关于无符号数四则运算语意处理的代码,代码完整,可以运行
recommend-type

面向对象程序课程设计——小学算术运算测试软件

小学算术运算测试软件(面向对象程序课程设计),有源代码,按照课程设计格式。
recommend-type

zigbee-cluster-library-specification

最新的zigbee-cluster-library-specification说明文档。
recommend-type

管理建模和仿真的文件

管理Boualem Benatallah引用此版本:布阿利姆·贝纳塔拉。管理建模和仿真。约瑟夫-傅立叶大学-格勒诺布尔第一大学,1996年。法语。NNT:电话:00345357HAL ID:电话:00345357https://theses.hal.science/tel-003453572008年12月9日提交HAL是一个多学科的开放存取档案馆,用于存放和传播科学研究论文,无论它们是否被公开。论文可以来自法国或国外的教学和研究机构,也可以来自公共或私人研究中心。L’archive ouverte pluridisciplinaire
recommend-type

实现实时数据湖架构:Kafka与Hive集成

![实现实时数据湖架构:Kafka与Hive集成](https://img-blog.csdnimg.cn/img_convert/10eb2e6972b3b6086286fc64c0b3ee41.jpeg) # 1. 实时数据湖架构概述** 实时数据湖是一种现代数据管理架构,它允许企业以低延迟的方式收集、存储和处理大量数据。与传统数据仓库不同,实时数据湖不依赖于预先定义的模式,而是采用灵活的架构,可以处理各种数据类型和格式。这种架构为企业提供了以下优势: - **实时洞察:**实时数据湖允许企业访问最新的数据,从而做出更明智的决策。 - **数据民主化:**实时数据湖使各种利益相关者都可
recommend-type

用 Python 画一个可以动的爱心

好的,我可以帮助您使用Python来绘制一个动态的爱心。您可以使用turtle库来实现。以下是实现代码: ```python import turtle import math # 设置画布和画笔 canvas = turtle.Screen() canvas.bgcolor("black") pencil = turtle.Turtle() pencil.speed(0) pencil.color("red", "pink") pencil.pensize(3) # 定义爱心函数 def draw_love(heart_size, x_offset=0, y_offset=0):
recommend-type

JSBSim Reference Manual

JSBSim参考手册,其中包含JSBSim简介,JSBSim配置文件xml的编写语法,编程手册以及一些应用实例等。其中有部分内容还没有写完,估计有生之年很难看到完整版了,但是内容还是很有参考价值的。