一个简单的计算器(Java)

一个简单的计算器(Java)

直接贴代码喽~

package com.calcular.work;

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

public class MainActivity implements ActionListener {


    public static void main(String[] args) {
        SwingUtilities.invokeLater(new Runnable() {

            @Override
            public void run() {
                new MainActivity().setlayout();

            }
        });
    }
    JPanel panelUP, panelDown;
    JTextField textField;
    public void setlayout() {
        panelUP = new JPanel();
        textField = new JTextField("0");
        textField.setHorizontalAlignment(JTextField.RIGHT);
        panelUP.add(textField);
        panelUP.setLayout(new GridLayout());
        panelUP.setSize(225, 30);
        JButton btac = new JButton("AC");
        JButton btdel = new JButton("Del");
        btac.addActionListener(this);
        btdel.addActionListener(this);
        panelDown = new JPanel();
        String[] bt = {"7", "8", "9", "/", "4", "5", "6", "*", "1", "2", "3", "-", "0", ".", "=", "+"};
        JButton[] button = new JButton[16];
        panelDown.setLayout(new GridLayout(4, 4));
        for (int i = 0; i < bt.length; i++) {
            button[i] = new JButton(bt[i]);
            panelDown.add(button[i]);
            button[i].addActionListener(this);
        }

        JFrame frame = new JFrame("Calculator");
        frame.setLayout(new BorderLayout());
        frame.add(panelUP, BorderLayout.NORTH);
        frame.add(panelDown, BorderLayout.CENTER);
        frame.setVisible(true);
        frame.setSize(225, 250);
        frame.setLocationRelativeTo(null);
    }
    private double fnum, snum, result;
    private int temp;
    DecimalFormat dec = new DecimalFormat("0.00 ");     //用于控制Double类型数据的小数位数
    @Override
    public void actionPerformed(ActionEvent e) {
        String string = e.getActionCommand();
        switch (string) {
        case "+":
            fnum = Double.parseDouble(this.textField.getText().toString());
            textField.setText("");
            temp = 1;
            break;
        case "-":
            fnum = Double.parseDouble(this.textField.getText().toString());
            textField.setText("");
            temp = 2;
            break;
        case "/":
            fnum = Double.parseDouble(this.textField.getText().toString());
            textField.setText("");
            temp = 3;
            break;
        case "*":
            fnum = Double.parseDouble(this.textField.getText().toString());
            textField.setText("");
            temp = 4;
            break;
        case ".":
            if (this.textField.getText().equals("")) {
                textField.setText("0.");
            }else {
                textField.setText(textField.getText().toString() + ".");
            }
            break;
        case "=":
            snum = Double.parseDouble(textField.getText().toString());
            switch (temp) {
            case 1:
                result = fnum + snum;
                textField.setText(Double.toString(result));
                break;
            case 2:
                result = fnum - snum;
                textField.setText(Double.toString(result));
                break;
            case 3:
                result = fnum / snum;
                textField.setText(Double.toString(result));
                break;
            case 4:
                result = fnum * snum;
                textField.setText(Double.toString(result));
                break;

            default:
                break;
            }
            break;
        default:
            if (textField.getText().toString().equals("0")) {
                textField.setText(string);
            }else {
                textField.setText(textField.getText() + string);
            }
            break;
        }

    }

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值