java实现计算器:加、减、乘、除、清除、取反、百分号功能

java实现计算器:加、减、乘、除、清除、取反、百分号功能

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

public class Calculator extends JFrame implements ActionListener {
    private JTextField textField;
    private JButton[] buttons;
    private String[] buttonLabels = {
            "C", "+/-", "%", "/",
            "7", "8", "9", "*",
            "4", "5", "6", "-",
            "1", "2", "3", "+",
            "0", ".", "="
    };
    private double num1, num2, result, prevNum;
    private String operator, prevOperator;
    private boolean isResultDisplayed;

    public Calculator() {
        super("Calculator");
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setSize(300, 300);
        setLayout(new BorderLayout());

        // 创建文本
        textField = new JTextField();
        textField.setEditable(false);
        textField.setHorizontalAlignment(JTextField.RIGHT);
        //设置文本输入框的大小
        textField.setPreferredSize(new Dimension(50,75));
         // 设置字体大小
        textField.setFont(new Font("小辉辉", Font.PLAIN, 50));//文本输入框字体大小
        add(textField, BorderLayout.NORTH);

        // 创建按钮
        JPanel buttonPanel = new JPanel(new GridLayout(5, 4));
        buttons = new JButton[buttonLabels.length];
        for (int i = 0; i < buttonLabels.length; i++) {
            buttons[i] = new JButton(buttonLabels[i]);
            //设置按钮字体大小
            buttons[i].setFont(new Font("小辉辉", Font.PLAIN, 24)); 
            buttons[i].addActionListener(this);
            buttonPanel.add(buttons[i]);
        }
        add(buttonPanel, BorderLayout.CENTER);

        setVisible(true);
    }

    public void actionPerformed(ActionEvent e) {
        String command = e.getActionCommand();
        if (isResultDisplayed && command.matches("[0-9]")) {
            textField.setText("");
            isResultDisplayed = false;
        }
        if (command.equals("C")) {
            num1 = 0;
            num2 = 0;
            operator = null;
            result = 0;
            textField.setText("");
        } else if (command.equals("+/-")) {
            double num = Double.parseDouble(textField.getText());
            textField.setText(Double.toString(-num));
        } else if (command.equals("%")) {
            double num = Double.parseDouble(textField.getText());
            textField.setText(Double.toString(num / 100));
        } else if (command.matches("[0-9]+")) {
            textField.setText(textField.getText() + command);
        } else if (command.equals(".")) {
            if (!textField.getText().contains(".")) {
                textField.setText(textField.getText() + ".");
            }
        } else if (command.matches("[+\\-*/]")) {
            if (result != 0) {
                num1 = result;
                operator = prevOperator;
                prevOperator = command;
                prevNum = Double.parseDouble(textField.getText());
            } else {
                num1 = Double.parseDouble(textField.getText());
                operator = command;
                prevNum = num1;
            }
            textField.setText("");
        } else if (command.equals("=")) {
            if (operator != null) {
                num2 = Double.parseDouble(textField.getText());
                if (operator.equals("+")) {
                    result = num1 + num2;
                } else if (operator.equals("-")) {
                    result = num1 - num2;
                } else if (operator.equals("*")) {
                    result = num1 * num2;
                } else if (operator.equals("/")) {
                    result = num1 / num2;
                }
                prevOperator = operator;
                prevNum = num2;
                textField.setText(Double.toString(result));
                operator = null;
                isResultDisplayed = true;
            }
        }
    }
	//运行实现功能
    public static void main(String[] args) {
        new Calculator();
    }
}

)

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值