Java 实现计算器程序:分离逻辑和界面
以下是一个简单的用 Java 实现计算器程序的示例,它将计算逻辑和界面逻辑分开,以提高代码的可维护性和可扩展性。
首先,我们需要定义一个 Calculator 类来处理计算逻辑:
public class Calculator {
public static double add(double num1, double num2) {
return num1 + num2;
}
public static double subtract(double num1, double num2) {
return num1 - num2;
}
public static double multiply(double num1, double num2) {
return num1 * num2;
}
public static double divide(double num1, double num2) {
if (num2 == 0) {
throw new IllegalArgumentException('Division by zero is not allowed.');
}
return num1 / num2;
}
}
这个类有四个静态方法,分别用于执行加、减、乘、除操作。
然后,我们需要实现一个 GUI 界面来处理用户输入和显示结果。我们可以使用 Java Swing 库来创建一个简单的窗口,其中包含文本框、按钮和标签:
import javax.swing.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class CalculatorGUI implements ActionListener {
private JFrame frame;
private JPanel panel;
private JTextField num1Field, num2Field, resultField;
private JLabel num1Label, num2Label, resultLabel;
private JButton addButton, subtractButton, multiplyButton, divideButton;
public CalculatorGUI() {
// Create a new JFrame
frame = new JFrame('Calculator');
// Create a new JPanel
panel = new JPanel();
// Create text fields
num1Field = new JTextField(10);
num2Field = new JTextField(10);
resultField = new JTextField(10);
resultField.setEditable(false);
// Create labels
num1Label = new JLabel('Number 1:');
num2Label = new JLabel('Number 2:');
resultLabel = new JLabel('Result:');
// Create buttons
addButton = new JButton('+');
subtractButton = new JButton('-');
multiplyButton = new JButton('*');
divideButton = new JButton('/');
// Add action listeners to buttons
addButton.addActionListener(this);
subtractButton.addActionListener(this);
multiplyButton.addActionListener(this);
divideButton.addActionListener(this);
// Add components to panel
panel.add(num1Label);
panel.add(num1Field);
panel.add(num2Label);
panel.add(num2Field);
panel.add(resultLabel);
panel.add(resultField);
panel.add(addButton);
panel.add(subtractButton);
panel.add(multiplyButton);
panel.add(divideButton);
// Add panel to frame
frame.add(panel);
// Set frame properties
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.pack();
frame.setVisible(true);
}
@Override
public void actionPerformed(ActionEvent e) {
double num1 = Double.parseDouble(num1Field.getText());
double num2 = Double.parseDouble(num2Field.getText());
double result = 0;
if (e.getSource() == addButton) {
result = Calculator.add(num1, num2);
} else if (e.getSource() == subtractButton) {
result = Calculator.subtract(num1, num2);
} else if (e.getSource() == multiplyButton) {
result = Calculator.multiply(num1, num2);
} else if (e.getSource() == divideButton) {
try {
result = Calculator.divide(num1, num2);
} catch (IllegalArgumentException ex) {
JOptionPane.showMessageDialog(frame, ex.getMessage(), 'Error', JOptionPane.ERROR_MESSAGE);
return;
}
}
resultField.setText(String.valueOf(result));
}
public static void main(String[] args) {
new CalculatorGUI();
}
}
在这个程序中,我们创建了一个 CalculatorGUI 类来实现 GUI 界面,并实现了 ActionListener 接口来处理按钮点击事件。在 actionPerformed 方法中,我们将从文本框中获取输入的数字,并调用 Calculator 类中相应的方法进行计算。如果出现除零错误,我们将显示一个错误消息框。
最后,在 main 方法中,我们创建了一个 CalculatorGUI 对象,以启动 GUI 程序。
这是一个简单的 Java 计算器程序示例,它将业务逻辑和界面逻辑分开,以提高代码的可维护性和可扩展性。您可以根据需要扩展该程序,添加更多功能,例如历史记录、记忆功能等。
注意:
- 代码中的双引号已改为单引号,以符合 JSON 格式。
- 该代码需要 Java Swing 库的支持。
- 在使用该程序时,请确保输入的数字是有效的,否则可能会导致错误。
原文地址: https://www.cveoy.top/t/topic/nQgG 著作权归作者所有。请勿转载和采集!