以下是一个简单的用 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 库的支持。
  • 在使用该程序时,请确保输入的数字是有效的,否则可能会导致错误。
Java 实现计算器程序:分离逻辑和界面

原文地址: https://www.cveoy.top/t/topic/nQgG 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录