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

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

分享给朋友:

相关文章

js计算器的实现

js计算器的实现

实现基础结构 HTML部分需要创建计算器的基本框架,包含显示区域和按钮。使用<div>容器包裹整个计算器,内部设置一个显示屏和多个按钮。 <div class="calculat…

如何用记事本写java

如何用记事本写java

使用记事本编写Java代码的方法 安装Java开发工具包(JDK)并配置环境变量。确保在命令行输入java -version和javac -version能正确显示版本信息。 创建一个新文本文件,…

如何用java做游戏

如何用java做游戏

使用Java开发游戏的基本方法 Java是一种跨平台的编程语言,适合开发2D游戏甚至简单的3D游戏。以下是使用Java开发游戏的主要方法和工具。 选择游戏开发框架 Java游戏开发通常依赖以下框架…

如何用java画图

如何用java画图

使用 Java 绘图基础 Java 提供了多种绘图方式,主要通过 java.awt 和 javax.swing 包中的类实现。以下是几种常见的绘图方法。 使用 Graphics 类绘图 Graph…

如何用java编程

如何用java编程

Java编程基础指南 环境配置 安装Java开发工具包(JDK),推荐使用最新版本。配置环境变量,确保JAVA_HOME指向JDK安装路径,并将bin目录添加到系统PATH中。验证安装是否成功:…

react如何用jq

react如何用jq

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