java 计算器 一个文件写计算器

在这里插入图片描述

package test;

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

public class calculate extends JFrame implements ActionListener {
    private Container ct;
    private JButton[] jbs;
    private String[] str;
    private JTextField jTextField;
    //cal[0]用来存储第一次输入的数
    //cal[1]用来存储运算符(+,-,*,/,%)
    //cal[2]用来存储第二次输入的数
    //cal[3]用来存储结果
    //cal[4]用来存储MS键所存储的数
    //cal[5]用来获取要存入的值(用来给cal[4]赋值)
    private String[] cal = {"","","","","",""};
    //_count和_count1始终相反,如果_count为true则表示正在输入cal[0]反之表示cal[0]输入完成,该输入cal[2]
    //当点过等号后将cal[3]的值赋给cal[0]
    private boolean _count = true;
    private boolean _count1 = false;

    public calculate() {
        super("计算器");
        jbs = new JButton[28];
        ct = this.getContentPane();
        this.setBounds(100, 100, 315, 400);
        this.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
        ct.setLayout(null);
        //菜单栏
        JMenuBar jMenuBar = new JMenuBar();
        JMenu jm = new JMenu("查看(V)");
        JMenu jm1 = new JMenu("编辑(E)");
        JMenu jm2 = new JMenu("帮助(H)");
        jMenuBar.add(jm);
        jMenuBar.add(jm1);
        jMenuBar.add(jm2);
        this.setJMenuBar(jMenuBar);
        //输出框
        jTextField = new JTextField("0");
        jTextField.setFont(new Font("宋体", Font.BOLD, 25));
        jTextField.setEditable(false);
        jTextField.setHorizontalAlignment(JTextField.RIGHT);
        jTextField.setBounds(5, 5, 285, 65);
        ct.add(jTextField);
        //按键                0    1    2    3    4    5    6    7  8   9   10  11  12 13  14  15   16  17  18  19   20  21   22  23  24 25  26  27
        str = new String[]{"MC", "MR", "MS", "M+", "M-", "←", "CE", "C", "±", "√", "7", "8", "9", "/", "%", "4", "5", "6", "*", "1/x", "1", "2", "3", "-", "=", "0", ".", "+"};
        int k = 0;
        for (int i = 75; i <= 195; i = i + 40) {
            for (int init = 10; init <= 290; init = init + 57) {
                JButton jButton = new JButton(str[k]);
                jbs[k] = jButton;
                jButton.setBounds(init, i, 52, 35);
                ct.add(jButton);
                k++;
                System.out.println(k);
            }
        }
        for (int i = 235; i < 265; i = i + 40) {
            for (int j = 10; j <= 181; j = j + 57) {
                JButton jButton = new JButton(str[k]);
                jButton.setBounds(j, i, 52, 35);
                ct.add(jButton);
                jbs[k] = jButton;
                k++;
                System.out.println(k);
            }
        }
        JButton jButton = new JButton(str[k]);
        jbs[k] = jButton;
        k++;
        System.out.println(k);
        jButton.setBounds(240, 235, 52, 75);
        ct.add(jButton);
        JButton jButton2 = new JButton(str[k]);
        System.out.println(str[k]);
        jButton2.setBounds(10, 275, 109, 35);
        ct.add(jButton2);
        jbs[k] = jButton2;
        k++;
        for (int i = 275; i < 310; i = i + 40) {
            for (int j = 124; j <= 181; j = j + 57) {
                JButton jButton1 = new JButton(str[k]);
                jButton1.setBounds(j, i, 52, 35);
                ct.add(jButton1);
                jbs[k] = jButton1;
                k++;
            }
        }
        for (int i = 0; i < 28; i++) {
            jbs[i].addActionListener(this);
        }
        this.setVisible(true);
    }

    public static void main(String[] args) {
        new calculate();
    }


    @Override
    public void actionPerformed(ActionEvent actionEvent) {
        if (actionEvent.getActionCommand().equals(".")){
            method(actionEvent);
        }else if (actionEvent.getActionCommand().equals("0")){
            method(actionEvent);
        } else if (actionEvent.getActionCommand().equals("1")){
            method(actionEvent);
        }else if(actionEvent.getActionCommand().equals("2")){
            method(actionEvent);
        }else if (actionEvent.getActionCommand().equals("3")){
            method(actionEvent);
        }else if (actionEvent.getActionCommand().equals("4")){
            method(actionEvent);
        }else if (actionEvent.getActionCommand().equals("5")){
            method(actionEvent);
        }else if (actionEvent.getActionCommand().equals("6")){
            method(actionEvent);
        }else if (actionEvent.getActionCommand().equals("7")){
            method(actionEvent);
        }else if (actionEvent.getActionCommand().equals("8")){
            method(actionEvent);
        }else if (actionEvent.getActionCommand().equals("9")){
            method(actionEvent);
        }else if (actionEvent.getActionCommand().equals("±")){
            if(_count){
                if (cal[0].contains(".")){
                    cal[0] = String.valueOf(Double.parseDouble(cal[0]) * (-1));
                    jTextField.setText(cal[0]);
                }else {
                    cal[0] = String.valueOf(Integer.parseInt(cal[0]) * (-1));
                    jTextField.setText(cal[0]);
                }
            }else {
                if (cal[2].contains(".")){
                    cal[2] = String.valueOf(Double.parseDouble(cal[2]) * (-1));
                    jTextField.setText(cal[2]);
                }else {
                    cal[2] = String.valueOf(Integer.parseInt(cal[2]) * (-1));
                    jTextField.setText(cal[2]);
                }
            }
        }else if(actionEvent.getActionCommand().equals("√")){
            if(_count){
                cal[0] = String.valueOf(Math.pow(Double.parseDouble(cal[0]),0.5));
                jTextField.setText(cal[0]);
            }else {
                cal[2] = String.valueOf(Math.pow(Double.parseDouble(cal[2]),0.5));
                jTextField.setText(cal[2]);
            }
        }else if(actionEvent.getActionCommand().equals("1/x")){
            if(_count){
                cal[0] = String.valueOf(1/Double.parseDouble(cal[0]));
                jTextField.setText(cal[0]);
            }else {
                cal[2] = String.valueOf(1/Double.parseDouble(cal[2]));
                jTextField.setText(cal[2]);
            }
        }else if(actionEvent.getActionCommand().equals("←")){
            if(_count){
                cal[0] = cal[0].substring(0,cal[0].length()-1);
                if(cal[0].equals("")){
                    jTextField.setText("0");
                }else {
                    jTextField.setText(cal[0]);
                }
            }else {
                cal[2] = cal[2].substring(0,cal[2].length()-1);
                if(cal[2].equals("")){
                    jTextField.setText("0");
                }else {
                    jTextField.setText(cal[2]);
                }
            }
        }else if(actionEvent.getActionCommand().equals("CE")){
            if (_count){
                cal[0]="";
                jTextField.setText("0");
            }else {
                cal[2]="";
                jTextField.setText("0");
            }
        }else if(actionEvent.getActionCommand().equals("C")){
            _count = true;
            cal[0]="";
            cal[1]="";
            cal[2]="";
            cal[3]="";
            jTextField.setText("0");
        }else if (actionEvent.getActionCommand().equals("+")){
            if (!cal[0].equals("")&&!cal[2].equals("")){
                if (cal[0].contains(".") || cal[2].contains(".")){
                    cal[0]=String.valueOf(Double.parseDouble(cal[0]) + Double.parseDouble(cal[2]));
                }else {
                    cal[0] = String.valueOf(Integer.parseInt(cal[0]) + Integer.parseInt(cal[2]));
                }
                cal[2]="";
            }
            cal[1] = "+";
            _count=false;
            jTextField.setText(cal[1]);
        }else if (actionEvent.getActionCommand().equals("-")){
            if (!cal[0].equals("")&&!cal[2].equals("")){
                if (cal[0].contains(".") || cal[2].contains(".")){
                    cal[0]=String.valueOf(Double.parseDouble(cal[0]) - Double.parseDouble(cal[2]));
                }else {
                    cal[0] = String.valueOf(Integer.parseInt(cal[0]) - Integer.parseInt(cal[2]));
                }
                cal[2]="";
            }
            cal[1] = "-";
            _count=false;
            jTextField.setText(cal[1]);
        }else if (actionEvent.getActionCommand().equals("*")){
            if (!cal[0].equals("")&&!cal[2].equals("")){
                if (cal[0].contains(".") || cal[2].contains(".")){
                    cal[0]=String.valueOf(Double.parseDouble(cal[0]) * Double.parseDouble(cal[2]));
                }else {
                    cal[0] = String.valueOf(Integer.parseInt(cal[0]) * Integer.parseInt(cal[2]));
                }
                cal[2]="";
            }
            cal[1] = "*";
            _count=false;
            jTextField.setText(cal[1]);
        }else if (actionEvent.getActionCommand().equals("/")){
            if (!cal[0].equals("")&&!cal[2].equals("")){
                if (cal[0].contains(".") || cal[2].contains(".")){
                    cal[0]=String.valueOf(Double.parseDouble(cal[0]) / Double.parseDouble(cal[2]));
                }else {
                    cal[0] = String.valueOf(Integer.parseInt(cal[0]) / Integer.parseInt(cal[2]));
                }
                cal[2]="";
            }
            cal[1] = "/";
            _count=false;
            jTextField.setText(cal[1]);
        }else if (actionEvent.getActionCommand().equals("%")){
            cal[0]=String.valueOf(Integer.parseInt(cal[0]) % Integer.parseInt(cal[2]));
            cal[2]="";
            cal[1] = "%";
            _count=false;
            jTextField.setText(cal[1]);
        }else if (actionEvent.getActionCommand().equals("=")){
            if(cal[0].equals("")&&cal[2].equals("")){
                jTextField.setText("0");
            }else if(!cal[0].equals("")&&cal[2].equals("")){
                jTextField.setText(cal[0]);
            }else if(!cal[0].equals("")&&!cal[2].equals("")){
                if(cal[1].equals("+")){
                    if (cal[0].contains(".") || cal[2].contains(".")){
                        cal[3]=String.valueOf(Double.parseDouble(cal[0]) + Double.parseDouble(cal[2]));
                    }else {
                        cal[3] = String.valueOf(Integer.parseInt(cal[0]) + Integer.parseInt(cal[2]));
                    }
                    jTextField.setText(cal[3]);
                }else if (cal[1].equals("-")){
                    if (cal[0].contains(".") || cal[2].contains(".")){
                        cal[3]=String.valueOf(Double.parseDouble(cal[0]) - Double.parseDouble(cal[2]));
                    }else {
                        cal[3] = String.valueOf(Integer.parseInt(cal[0]) - Integer.parseInt(cal[2]));
                    }
                    jTextField.setText(cal[3]);
                }else if(cal[1].equals("*")){
                    if (cal[0].contains(".") || cal[2].contains(".")){
                        cal[3]=String.valueOf(Double.parseDouble(cal[0]) * Double.parseDouble(cal[2]));
                    }else {
                        cal[3] = String.valueOf(Integer.parseInt(cal[0]) * Integer.parseInt(cal[2]));
                    }
                    jTextField.setText(cal[3]);
                }else if (cal[1].equals("/")){
                    if (cal[0].contains(".") || cal[2].contains(".")){
                        cal[3]=String.valueOf(Double.parseDouble(cal[0]) / Double.parseDouble(cal[2]));
                    }else {
                        cal[3] = String.valueOf(Integer.parseInt(cal[0]) / Integer.parseInt(cal[2]));
                    }
                    jTextField.setText(cal[3]);
                }else if (cal[1].equals("%")){
                    cal[3]=String.valueOf(Integer.parseInt(cal[0]) % Integer.parseInt(cal[2]));
                    jTextField.setText(cal[3]);
                }
            }
            cal[0]=cal[3];
            cal[2]="";
            _count=true;
            _count1 = true;
            cal[5]=cal[0];
        }else if(actionEvent.getActionCommand().equals("MC")){
            cal[4]="";
        }else if(actionEvent.getActionCommand().equals("MR")){
            if(_count){
                if(!cal[4].equals("")){
                    cal[0]=cal[4];
                    jTextField.setText(cal[0]);
                }
            }else {
                if(!cal[4].equals("")){
                    cal[2]=cal[4];
                    jTextField.setText(cal[2]);
                }
            }
        }else if(actionEvent.getActionCommand().equals("MS")){
            if(_count){
                cal[0]="";
            }
            cal[4]=cal[5];
            System.out.println("cal[5]"+cal[5]);
            System.out.println("ms:"+cal[4]);
        }else if(actionEvent.getActionCommand().equals("M+")){
            if(!cal[4].equals("")){
                if (cal[4].contains(".") || cal[5].contains(".")){
                    cal[4]=String.valueOf(Double.parseDouble(cal[4]) + Double.parseDouble(cal[5]));
                }else {
                    cal[4] = String.valueOf(Integer.parseInt(cal[4]) + Integer.parseInt(cal[5]));
                }
            }
        }else if(actionEvent.getActionCommand().equals("M-")){
            if(!cal[4].equals("")){
                if (cal[4].contains(".") || cal[5].contains(".")){
                    cal[4]=String.valueOf(Double.parseDouble(cal[4]) - Double.parseDouble(cal[5]));
                }else {
                    cal[4] = String.valueOf(Integer.parseInt(cal[4]) - Integer.parseInt(cal[5]));
                }
            }
        }
    }
    public void method(ActionEvent actionEvent){
        if(_count){
            if (_count1){
                cal[0]="";
                _count1=false;
            }
            cal[0] += actionEvent.getActionCommand();
            cal[5]=cal[0];
            System.out.println(cal[5]);
        }else {
            cal[2] += actionEvent.getActionCommand();
            cal[5]=cal[2];
        }
        jTextField.setText(actionEvent.getActionCommand());
    }
}


大佬的连接

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值