欢迎访问宙启技术站
智能推送

Java函数实现一个简单的计算器应用

发布时间:2023-06-01 20:42:16

本文将介绍如何使用Java函数,实现一个简单的计算器应用。本计算器支持加、减、乘、除四则运算和清除操作。用户输入表达式并点击计算按钮,计算器根据表达式计算结果并显示。以下是具体的实现步骤:

1. 创建Java项目和窗口

首先,在Eclipse中创建一个Java项目。然后,创建一个窗口并设置它的属性。为了简洁起见,本文将使用Swing库来创建窗口。

import javax.swing.JFrame;

public class Calculator extends JFrame {

    /**
     * 
     */
    private static final long serialVersionUID = 1L;

    public Calculator() {
        super("Calculator");
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setSize(300, 300);
        setLocationRelativeTo(null);
        setVisible(true);
    }

    public static void main(String[] args) {
        new Calculator();
    }

}

2. 创建界面元素

接下来,创建计算器界面所需的所有组件。计算器界面包括一个文本框用于输入表达式,数字和操作按钮。为了实现重用性和易扩展性,可以将所有的数字和操作符都放在一个数组中。

import java.awt.BorderLayout;
import java.awt.GridLayout;
import javax.swing.JButton;
import javax.swing.JPanel;
import javax.swing.JTextField;

public class Calculator extends JFrame {

    /**
     * 
     */
    private static final long serialVersionUID = 1L;

    private JTextField textField;
    private JButton[] buttons;
    private String[] buttonLabels = {
            "7", "8", "9", "+",
            "4", "5", "6", "-",
            "1", "2", "3", "*",
            "0", "C", "=", "/"
    };

    public Calculator() {
        super("Calculator");
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setSize(300, 300);
        setLocationRelativeTo(null);

        textField = new JTextField();
        add(textField, BorderLayout.NORTH);

        JPanel buttonPanel = new JPanel(new GridLayout(4, 4));
        buttons = new JButton[buttonLabels.length];
        for (int i = 0; i < buttonLabels.length; i++) {
            buttons[i] = new JButton(buttonLabels[i]);
            buttonPanel.add(buttons[i]);
        }
        add(buttonPanel, BorderLayout.CENTER);

        setVisible(true);
    }

    public static void main(String[] args) {
        new Calculator();
    }

}

3. 添加事件处理器

现在,为每个按钮添加事件处理器。每个数字按钮应该将数字添加到文本框中,每个操作符按钮应该将运算符添加到文本框中。等号按钮应该计算表达式并显示结果,清除按钮应该清除文本框中的内容。

import java.awt.BorderLayout;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JPanel;
import javax.swing.JTextField;

public class Calculator extends JFrame {

    /**
     * 
     */
    private static final long serialVersionUID = 1L;

    private JTextField textField;
    private JButton[] buttons;
    private String[] buttonLabels = {
            "7", "8", "9", "+",
            "4", "5", "6", "-",
            "1", "2", "3", "*",
            "0", "C", "=", "/"
    };
    private String currentOperator;
    private double result;
    private boolean calculated;

    public Calculator() {
        super("Calculator");
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setSize(300, 300);
        setLocationRelativeTo(null);

        textField = new JTextField();
        add(textField, BorderLayout.NORTH);

        JPanel buttonPanel = new JPanel(new GridLayout(4, 4));
        buttons = new JButton[buttonLabels.length];
        for (int i = 0; i < buttonLabels.length; i++) {
            buttons[i] = new JButton(buttonLabels[i]);
            buttonPanel.add(buttons[i]);
            buttons[i].addActionListener(new ActionListener() {
                @Override
                public void actionPerformed(ActionEvent e) {
                    String buttonLabel = e.getActionCommand();
                    switch (buttonLabel) {
                    case "C":
                        textField.setText("");
                        break;
                    case "=":
                        calculated = true;
                        calculate();
                        break;
                    case "+":
                    case "-":
                    case "*":
                    case "/":
                        currentOperator = buttonLabel;
                        if (calculated) {
                            textField.setText("");
                        } else {
                            calculate();
                        }
                        break;
                    default:
                        if (calculated) {
                            textField.setText("");
                            calculated = false;
                        }
                        textField.setText(textField.getText() + buttonLabel);
                    }
                }
            });
        }
        add(buttonPanel, BorderLayout.CENTER);

        setVisible(true);
    }

    private void calculate() {
        String expression = textField.getText();
        String[] elements = expression.split(currentOperator);
        double operand1 = Double.parseDouble(elements[0]);
        double operand2 = Double.parseDouble(elements[1]);
        switch (currentOperator) {
        case "+":
            result = operand1 + operand2;
            break;
        case "-":
            result = operand1 - operand2;
            break;
        case "*":
            result = operand1 * operand2;
            break;
        case "/":
            result = operand1 / operand2;
            break;
        }
        textField.setText(String.valueOf(result));
    }

    public static void main(String[] args) {
        new Calculator();
    }

}

4. 完成计算器应用

现在,计算器已经可以工作了。用户可以输入表达式并点击计算按钮,计算器会按照输入进行计算并显示结果。如果用户需要清除操作,可以点击清除按钮。

本文介绍了如何使用Java函数实现一个简单的计算器应用。通过这个例子,读者可以学习如何创建Java窗口、添加组件、使用事件处理器等基本技术。读者也可以增加更多的功能来扩展这个计算器应用。