速览体育网

Good Luck To You!

Java如何实现一个功能齐全的计算器程序?

Java实现计算器的步骤可以分为以下几个部分:

Java如何实现一个功能齐全的计算器程序?

设计计算器界面

我们需要设计一个简单的计算器界面,在Java中,我们可以使用Swing库来创建图形用户界面(GUI),以下是一个简单的计算器界面设计:

界面元素 功能说明
数字按钮(0-9) 输入数字
运算符按钮(+、-、*、/) 选择运算符
清除按钮(C) 清除输入
等于按钮(=) 计算结果
小数点按钮(.) 输入小数点

创建计算器类

我们需要创建一个计算器类,用于处理计算逻辑,以下是一个简单的计算器类实现:

public class Calculator {
    private double result;
    private String operator;
    private boolean start;
    public Calculator() {
        result = 0;
        operator = "=";
        start = true;
    }
    public void numberClick(int number) {
        if (start) {
            result = number;
        } else {
            result = result * 10 + number;
        }
        start = false;
    }
    public void operatorClick(String op) {
        if (!start) {
            if (operator.equals("+") || operator.equals("-") || operator.equals("*") || operator.equals("/")) {
                result = calculate();
            }
        }
        operator = op;
        start = true;
    }
    public void equalClick() {
        result = calculate();
        operator = "=";
        start = true;
    }
    private double calculate() {
        double value;
        switch (operator) {
            case "+":
                value = result + Double.parseDouble(String.valueOf(result));
                break;
            case "-":
                value = result - Double.parseDouble(String.valueOf(result));
                break;
            case "*":
                value = result * Double.parseDouble(String.valueOf(result));
                break;
            case "/":
                value = result / Double.parseDouble(String.valueOf(result));
                break;
            default:
                value = result;
                break;
        }
        return value;
    }
    public double getResult() {
        return result;
    }
}

实现界面与逻辑的交互

在计算器类的基础上,我们需要实现界面与逻辑的交互,以下是一个简单的实现:

import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class CalculatorGUI {
    private Calculator calculator;
    private JFrame frame;
    private JTextField display;
    private JPanel panel;
    public CalculatorGUI() {
        calculator = new Calculator();
        frame = new JFrame("Java Calculator");
        display = new JTextField(12);
        display.setEditable(false);
        panel = new JPanel();
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setSize(400, 400);
        frame.setLayout(new BorderLayout());
        frame.add(display, BorderLayout.NORTH);
        frame.add(panel, BorderLayout.CENTER);
        createPanel();
        frame.setVisible(true);
    }
    private void createPanel() {
        String[] buttonLabels = {
                "7", "8", "9", "/",
                "4", "5", "6", "*",
                "1", "2", "3", "-",
                "0", ".", "=", "+",
                "C"
        };
        panel.setLayout(new GridLayout(5, 4, 5, 5));
        for (String label : buttonLabels) {
            JButton button = new JButton(label);
            button.addActionListener(new ActionListener() {
                @Override
                public void actionPerformed(ActionEvent e) {
                    String command = e.getActionCommand();
                    if (command.equals("C")) {
                        calculator = new Calculator();
                        display.setText("");
                    } else if (command.equals("=")) {
                        display.setText(String.valueOf(calculator.getResult()));
                    } else {
                        calculator.operatorClick(command);
                        display.setText(String.valueOf(calculator.getResult()));
                    }
                }
            });
            panel.add(button);
        }
    }
    public static void main(String[] args) {
        new CalculatorGUI();
    }
}

经验案例

在我们的实际开发过程中,为了提高计算器的性能,我们采用了事件分派器(Event Dispatch Thread,EDT)来处理用户界面事件,这样可以避免在EDT中执行耗时的计算任务,从而提高用户体验。

Java如何实现一个功能齐全的计算器程序?

FAQs

Q1:Java计算器如何处理异常输入?

A1: 在我们的实现中,如果用户输入了非法的运算符或者除数为零的情况,计算器会显示一个错误信息,并恢复到初始状态。

Q2:Java计算器是否支持科学计算?

A2: 目前我们的计算器仅支持基本的算术运算,如果需要支持科学计算,我们可以扩展计算器类,增加新的功能,如三角函数、指数运算等。

Java如何实现一个功能齐全的计算器程序?

国内详细文献权威来源

《Java编程思想》(第4版),作者:埃克尔·贝克;

《Java Swing程序设计》(第2版),作者:埃里克·费舍尔、凯文·卡尔森。

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

«    2026年2月    »
1
2345678
9101112131415
16171819202122
232425262728
控制面板
您好,欢迎到访网站!
  查看权限
网站分类
搜索
最新留言
文章归档
网站收藏
友情链接

Powered By Z-BlogPHP 1.7.4

Copyright Your WebSite.Some Rights Reserved.