如何用 Java实现计算机

首先,创建一个名为Calculator的Java类,该类包含用于执行计算的方法。该类可以包含addition、subtraction、multiplication和division等方法。这些方法将采用两个double类型的参数,并返回计算结果。

package studycode;

/**
 * @author: yuuu
 * Description: 用于执行计算的方法
 */
public class Calculator {
    public static double addition(double num1, double num2) {
        return num1 + num2;
    }

    public static double subtraction(double num1, double num2) {
        return num1 - num2;
    }

    public static double multiplication(double num1, double num2) {
        return num1 * num2;
    }

    public static double division(double num1, double num2) {
        if (num2 == 0) {
            throw new IllegalArgumentException("Cannot divide by zero");
        }
        return num1 / num2;
    }
}

接下来,创建一个名为CalculatorUI的Java类,该类将负责显示计算器界面和接收用户输入。该类可以包含数字按钮、运算符按钮和等号按钮等组件,并在用户单击这些按钮时执行适当的操作。例如,当用户单击数字按钮时,CalculatorUI将向文本字段添加相应的数字。当用户单击运算符按钮时,CalculatorUI将调用Calculator类中的适当方法,并将结果显示在文本字段中。

package studycode;

/**
 * @author: yuuu
 * Description: 显示计算器界面和接收用户输入
 */
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;

public class CalculatorUI extends JFrame implements ActionListener {
    private JTextField displayField;
    private double firstNumber;
    private String operator;

    public CalculatorUI() {
        super("Calculator");
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        JPanel buttonPanel = new JPanel(new GridLayout(5, 4));

        JButton button0 = new JButton("0");
        button0.addActionListener(this);
        buttonPanel.add(button0);

        JButton button1 = new JButton("1");
        button1.addActionListener(this);
        buttonPanel.add(button1);

        JButton button2 = new JButton("2");
        button2.addActionListener(this);
        buttonPanel.add(button2);

        JButton button3 = new JButton("3");
        button3.addActionListener(this);
        buttonPanel.add(button3);

        JButton button4 = new JButton("4");
        button4.addActionListener(this);
        buttonPanel.add(button4);

        JButton button5 = new JButton("5");
        button5.addActionListener(this);
        buttonPanel.add(button5);

        JButton button6 = new JButton("6");
        button6.addActionListener(this);
        buttonPanel.add(button6);

        JButton button7 = new JButton("7");
        button7.addActionListener(this);
        buttonPanel.add(button7);

        JButton button8 = new JButton("8");
        button8.addActionListener(this);
        buttonPanel.add(button8);

        JButton button9 = new JButton("9");
        button9.addActionListener(this);
        buttonPanel.add(button9);

        JButton acButton = new JButton("AC");
        acButton.addActionListener(this);
        buttonPanel.add(acButton);

        JButton addButton = new JButton("+");
        addButton.addActionListener(this);
        // 修复加法按钮无法显示的问题
        addButton.setPreferredSize(new Dimension(50, 50));
        buttonPanel.add(addButton);

        JButton subtractButton = new JButton("-");
        subtractButton.addActionListener(this);
        buttonPanel.add(subtractButton);

        JButton multiplyButton = new JButton("*");
        multiplyButton.addActionListener(this);
        buttonPanel.add(multiplyButton);

        JButton divideButton = new JButton("/");
        divideButton.addActionListener(this);
        buttonPanel.add(divideButton);

        JButton equalsButton = new JButton("=");
        equalsButton.addActionListener(this);
        buttonPanel.add(equalsButton);

        displayField = new JTextField();
        displayField.setEditable(false);

        Container contentPane = getContentPane();
        contentPane.setLayout(new BorderLayout());
        contentPane.add(displayField, BorderLayout.NORTH);
        contentPane.add(buttonPanel, BorderLayout.CENTER);

        pack();
    }

    public void actionPerformed(ActionEvent event) {
        String command = event.getActionCommand();

        if (command.equals("+")) {
            firstNumber = Double.parseDouble(displayField.getText());
            operator = "+";
            displayField.setText("");

        } else if (command.equals("-")) {
            firstNumber = Double.parseDouble(displayField.getText());
            operator = "-";
            displayField.setText("");

        } else if (command.equals("*")) {
            firstNumber = Double.parseDouble(displayField.getText());
            operator = "*";
            displayField.setText("");

        } else if (command.equals("/")) {
            firstNumber = Double.parseDouble(displayField.getText());
            operator = "/";
            displayField.setText("");

        } else if (command.equals("=")) {
            double secondNumber = Double.parseDouble(displayField.getText());
            double result;

            switch (operator) {
                case "+":
                    result = Calculator.addition(firstNumber, secondNumber);
                    break;
                case "-":
                    result = Calculator.subtraction(firstNumber, secondNumber);
                    break;
                case "*":
                    result = Calculator.multiplication(firstNumber, secondNumber);
                    break;
                case "/":
                    result = Calculator.division(firstNumber, secondNumber);
                    break;
                default:
                    throw new IllegalArgumentException("Invalid operator: " + operator);
            }

            displayField.setText(Double.toString(result));

        } else if (command.equals("AC")) {
            displayField.setText("");

        } else {
            String currentText = displayField.getText();
            String newText = currentText + command;
            displayField.setText(newText);
        }
    }

    public static void main(String[] args) {
        CalculatorUI calculatorUI = new CalculatorUI();
        calculatorUI.setVisible(true);
    }
}


然后,我们就可以放心运行了!

计算一个7+8

 完美!

欲买桂花同载酒。

终不似,少年游。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

YuuuZh。

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值