当前位置:首页 > Java

如何用java做计算器

2026-02-05 15:48:13Java

使用Java实现简单计算器

创建一个基于控制台的简单计算器,支持加减乘除基本运算。

定义主类结构

import java.util.Scanner;

public class Calculator {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入第一个数字:");
        double num1 = scanner.nextDouble();

        System.out.println("请输入运算符(+, -, *, /):");
        char operator = scanner.next().charAt(0);

        System.out.println("请输入第二个数字:");
        double num2 = scanner.nextDouble();

        double result = calculate(num1, num2, operator);
        System.out.println("计算结果: " + result);
    }
}

实现计算方法

public static double calculate(double num1, double num2, char operator) {
    switch (operator) {
        case '+':
            return num1 + num2;
        case '-':
            return num1 - num2;
        case '*':
            return num1 * num2;
        case '/':
            if (num2 == 0) {
                throw new ArithmeticException("除数不能为零");
            }
            return num1 / num2;
        default:
            throw new IllegalArgumentException("无效的运算符");
    }
}

实现图形界面计算器

使用Java Swing创建带界面的计算器。

如何用java做计算器

创建GUI框架

import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

public class GUICalculator extends JFrame {
    private JTextField display;
    private double firstNumber = 0;
    private String operation = "";

    public GUICalculator() {
        setTitle("计算器");
        setSize(300, 400);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setLayout(new BorderLayout());

        display = new JTextField();
        display.setEditable(false);
        add(display, BorderLayout.NORTH);

        JPanel buttonPanel = new JPanel();
        buttonPanel.setLayout(new GridLayout(4, 4));

        String[] buttons = {
            "7", "8", "9", "/",
            "4", "5", "6", "*",
            "1", "2", "3", "-",
            "0", ".", "=", "+"
        };

        for (String text : buttons) {
            JButton button = new JButton(text);
            button.addActionListener(new ButtonClickListener());
            buttonPanel.add(button);
        }

        add(buttonPanel, BorderLayout.CENTER);
    }
}

实现按钮事件处理

private class ButtonClickListener implements ActionListener {
    @Override
    public void actionPerformed(ActionEvent e) {
        String command = e.getActionCommand();

        if ("0123456789.".contains(command)) {
            display.setText(display.getText() + command);
        } else if ("+-*/".contains(command)) {
            firstNumber = Double.parseDouble(display.getText());
            operation = command;
            display.setText("");
        } else if ("=".equals(command)) {
            double secondNumber = Double.parseDouble(display.getText());
            double result = 0;

            switch (operation) {
                case "+":
                    result = firstNumber + secondNumber;
                    break;
                case "-":
                    result = firstNumber - secondNumber;
                    break;
                case "*":
                    result = firstNumber * secondNumber;
                    break;
                case "/":
                    result = firstNumber / secondNumber;
                    break;
            }

            display.setText(String.valueOf(result));
        }
    }
}

启动GUI计算器

如何用java做计算器

public static void main(String[] args) {
    SwingUtilities.invokeLater(() -> {
        GUICalculator calculator = new GUICalculator();
        calculator.setVisible(true);
    });
}

计算器功能扩展建议

增加平方根、幂运算等高级功能

case '√':
    return Math.sqrt(num1);
case '^':
    return Math.pow(num1, num2);

添加内存功能(M+, M-, MR, MC) 实现历史记录功能 增加科学计算模式切换 支持括号和表达式求值 添加错误处理和输入验证

测试计算器功能

编写单元测试验证计算逻辑

import org.junit.Test;
import static org.junit.Assert.*;

public class CalculatorTest {
    @Test
    public void testAddition() {
        assertEquals(5.0, Calculator.calculate(2, 3, '+'), 0.001);
    }

    @Test
    public void testDivision() {
        assertEquals(2.5, Calculator.calculate(5, 2, '/'), 0.001);
    }

    @Test(expected = ArithmeticException.class)
    public void testDivisionByZero() {
        Calculator.calculate(5, 0, '/');
    }
}

这些实现方案提供了从基础到进阶的计算器开发方法,可以根据需求选择控制台版本或图形界面版本,并逐步扩展功能。

分享给朋友:

相关文章

css制作计算器界面

css制作计算器界面

使用CSS制作计算器界面 制作计算器界面需要结合HTML结构、CSS样式以及可能的JavaScript交互功能。以下是纯CSS部分的实现方法,创建一个基础计算器界面。 HTML结构 先构建一个简单的…

如何用VUE实现倍速

如何用VUE实现倍速

使用Vue实现视频倍速播放 在Vue中实现视频倍速播放可以通过HTML5的<video>元素和Vue的数据绑定功能来完成。以下是实现方法: 安装Vue 确保项目中已经安装Vue。如果没有…

如何用vue实现前端

如何用vue实现前端

Vue.js 前端开发实现方法 环境搭建与项目初始化 安装 Node.js 和 npm/yarn 作为基础环境 使用 Vue CLI 创建项目:vue create project-name 选择预设…

如何用react构建用户界面

如何用react构建用户界面

安装 React 环境 使用 Create React App 快速搭建项目环境,运行以下命令: npx create-react-app my-app cd my-app npm start…

如何用react写页面跳转

如何用react写页面跳转

使用React Router进行页面跳转 React Router是React生态中最常用的路由管理库,适用于单页面应用(SPA)的导航和页面跳转。以下是具体实现方法: 安装React Router…

react如何用at.js

react如何用at.js

使用 AT.js 在 React 中实现 A/B 测试或个性化 AT.js 是 Adobe Target 提供的一个 JavaScript 库,用于在网页上实现 A/B 测试、个性化内容和体验。在 R…