模拟实现一个可视化的简单计算器,至少提供包括加法、减法、乘法、除法等基本操作,希望能支持包括正负号、平方根、清零等其他功能

时间: 2023-10-20 13:01:48 浏览: 30
好的,这是一个简单的GUI程序,需要使用Java Swing库来实现。以下是一个实现的例子: ```java import javax.swing.*; import java.awt.*; import java.awt.event.*; public class Calculator extends JFrame implements ActionListener { private JTextField inputField; private JLabel resultLabel; private double num1, num2; private String operator; public Calculator() { // 设置窗口属性 setTitle("计算器"); setSize(300, 300); setLocationRelativeTo(null); setResizable(false); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); // 添加组件 JPanel panel = new JPanel(new GridLayout(5, 4, 5, 5)); inputField = new JTextField(); panel.add(inputField); JButton sqrtButton = new JButton("√"); sqrtButton.addActionListener(this); panel.add(sqrtButton); JButton clearButton = new JButton("C"); clearButton.addActionListener(this); panel.add(clearButton); JButton signButton = new JButton("+/-"); signButton.addActionListener(this); panel.add(signButton); JButton divideButton = new JButton("/"); divideButton.addActionListener(this); panel.add(divideButton); JButton num7Button = new JButton("7"); num7Button.addActionListener(this); panel.add(num7Button); JButton num8Button = new JButton("8"); num8Button.addActionListener(this); panel.add(num8Button); JButton num9Button = new JButton("9"); num9Button.addActionListener(this); panel.add(num9Button); JButton multiplyButton = new JButton("*"); multiplyButton.addActionListener(this); panel.add(multiplyButton); JButton num4Button = new JButton("4"); num4Button.addActionListener(this); panel.add(num4Button); JButton num5Button = new JButton("5"); num5Button.addActionListener(this); panel.add(num5Button); JButton num6Button = new JButton("6"); num6Button.addActionListener(this); panel.add(num6Button); JButton minusButton = new JButton("-"); minusButton.addActionListener(this); panel.add(minusButton); JButton num1Button = new JButton("1"); num1Button.addActionListener(this); panel.add(num1Button); JButton num2Button = new JButton("2"); num2Button.addActionListener(this); panel.add(num2Button); JButton num3Button = new JButton("3"); num3Button.addActionListener(this); panel.add(num3Button); JButton plusButton = new JButton("+"); plusButton.addActionListener(this); panel.add(plusButton); JButton num0Button = new JButton("0"); num0Button.addActionListener(this); panel.add(num0Button); JButton dotButton = new JButton("."); dotButton.addActionListener(this); panel.add(dotButton); JButton equalsButton = new JButton("="); equalsButton.addActionListener(this); panel.add(equalsButton); resultLabel = new JLabel(); panel.add(resultLabel); add(panel); setVisible(true); } @Override public void actionPerformed(ActionEvent e) { String action = e.getActionCommand(); switch (action) { case "C": clear(); break; case "+/-": changeSign(); break; case "√": sqrt(); break; case "+": case "-": case "*": case "/": setOperator(action); break; case "=": calculate(); break; default: appendNumber(action); } } private void clear() { inputField.setText(""); resultLabel.setText(""); num1 = 0; num2 = 0; operator = null; } private void changeSign() { String input = inputField.getText(); if (input.startsWith("-")) { inputField.setText(input.substring(1)); } else { inputField.setText("-" + input); } } private void sqrt() { String input = inputField.getText(); double num = Double.parseDouble(input); double result = Math.sqrt(num); inputField.setText(String.valueOf(result)); } private void setOperator(String op) { String input = inputField.getText(); num1 = Double.parseDouble(input); operator = op; inputField.setText(""); } private void appendNumber(String num) { String input = inputField.getText(); inputField.setText(input + num); } private void calculate() { String input = inputField.getText(); num2 = Double.parseDouble(input); double result = 0; switch (operator) { case "+": result = num1 + num2; break; case "-": result = num1 - num2; break; case "*": result = num1 * num2; break; case "/": result = num1 / num2; break; } resultLabel.setText(String.valueOf(result)); inputField.setText(""); } public static void main(String[] args) { new Calculator(); } } ``` 这个程序使用了JFrame和JPanel来创建窗口和组件,并使用了GridLayout来布局组件。使用JTextField和JLabel来实现文本框和标签。实现逻辑是在按钮点击事件中进行相应操作,并将结果显示在标签中。支持的操作包括清零、正负号、平方根、加法、减法、乘法、除法等基本操作。

相关推荐

最新推荐

recommend-type

python实现可视化动态CPU性能监控

主要为大家详细介绍了python可视化动态CPU性能监控,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
recommend-type

Python爬取数据并实现可视化代码解析

主要介绍了Python爬取数据并实现可视化代码解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
recommend-type

使用pytorch实现可视化中间层的结果

今天小编就为大家分享一篇使用pytorch实现可视化中间层的结果,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
recommend-type

用Pandas和Folium做一个新冠数据可视化

目录数据集介绍可视化步骤1. 导入pandas等需要的库2. 读取数据,查看基本情况3. 读取城市坐标数据4. 按省份统计人数5. 合并城市坐标数据 与 省份数据6. 绘制地图写入HTML文件,并用浏览器打开完整代码 数据集介绍 1...
recommend-type

vue实现可视化可拖放的自定义表单的示例代码

主要介绍了vue实现可视化可拖放的自定义表单的示例代码,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
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

【实战演练】增量式PID的simulink仿真实现

# 2.1 Simulink仿真环境简介 Simulink是MATLAB中用于建模、仿真和分析动态系统的图形化环境。它提供了一个直观的用户界面,允许用户使用块和连接线来创建系统模型。Simulink模型由以下元素组成: - **子系统:**将复杂系统分解成更小的、可管理的模块。 - **块:**代表系统中的组件,如传感器、执行器和控制器。 - **连接线:**表示信号在块之间的流动。 Simulink仿真环境提供了广泛的块库,涵盖了各种工程学科,包括控制系统、电子和机械工程。它还支持用户自定义块的创建,以满足特定仿真需求。 # 2. Simulink仿真环境的搭建和建模 ### 2.
recommend-type

训练集和测试集的准确率都99%,但是预测效果不好

即使训练集和测试集的准确率都很高,但是在实际的预测中表现不佳,可能会有以下几个原因: 1. 数据质量问题:模型训练和测试的数据可能存在问题,比如数据标签错误、数据集采样不均衡、数据集中存在异常值等问题,这些问题可能会导致模型在实际预测中表现不佳。 2. 特征工程问题:模型的特征工程可能存在问题,导致模型无法很好地捕捉数据的特征,从而影响预测效果。 3. 模型选择问题:模型的选择可能不合适,比如选择的模型太简单,无法很好地拟合数据,或者选择的模型太复杂,导致过拟合等问题。 4. 超参数调整问题:模型的超参数可能没有调整到最佳状态,需要进行调整。 针对以上可能的原因,可以采取相应的措施进
recommend-type

JSBSim Reference Manual

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