使用java来实现一个简单的计算器

使用java来实现一个简单的计算器

最近使用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());
        }
    }

效果图:

如有错误,欢迎指正
《2020最新Java基础精讲视频教程和学习路线!》

链接: https://blog.csdn.net/Zuobf_bk/article/details/110317606

你可能感兴趣的:(后端,java,springboot,程序员,spring)