当前位置:首页 > 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, '/');
    }
}

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

分享给朋友:

相关文章

如何用vue实现轮播

如何用vue实现轮播

使用Vue实现轮播 基础实现(基于原生Vue) 创建轮播组件,通过动态绑定v-for和v-show控制显示当前幻灯片: <template> <div class="carou…

react如何用jq

react如何用jq

在React中使用jQuery React和jQuery可以一起使用,但需要注意两者的DOM操作方式不同。React使用虚拟DOM,而jQuery直接操作真实DOM。混合使用时需谨慎避免冲突。 安装…

如何用vscode 启动react项目

如何用vscode 启动react项目

安装必要工具 确保已安装Node.js(包含npm或yarn),可在终端运行node -v和npm -v检查版本。未安装需从Node.js官网下载。 创建React项目 打开VSCode终端(快捷键…

如何用react构建单页面

如何用react构建单页面

使用React构建单页面应用(SPA)的步骤 安装Node.js和npm 确保系统已安装Node.js(包含npm)。可通过命令行输入node -v和npm -v验证版本。推荐使用LTS版本。 创建…

后端路由框架里react如何用

后端路由框架里react如何用

React 后端路由框架使用指南 React 本身是一个前端库,通常与后端路由框架(如 Express、Koa 或 Next.js)结合使用。以下是几种常见场景下的使用方法: 使用 Express…

如何用命令行新建react项目

如何用命令行新建react项目

使用 create-react-app 创建项目 安装最新版本的 create-react-app 工具后,在命令行运行以下命令生成新项目: npx create-react-app my-ap…