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

java简单的计算器简介

提示: 如因为jdk版问题提上边的代码报错则可以使用博客下方的代码。

使用Java实现一个简单的整数计算器,可是实现加减乘除操作,使用swing,awt模型开发。相比一些常见的计算器,本文设计的计算器可以实现多个操作符的长公式计算。
本文设计的计算器在被除数是0的时候会自动除以一,以此防止出现错误。

将会进行的改变

本文设计的计算器暂时只支持简单的加减乘除操作,之后会添加浮点数的加减乘除及其他负载一些的操作。

使用的环境

jdk1.8
本文使用IDEA做的代码demo,但是代码可在所有java编辑器上运行,

问题

如有问题欢迎指出,

代码

package lxl.testdemo;


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

public class MiniJisuanqi extends JFrame {
    JPanel jPanelText;
    JTextField textField;
    JPanel jPanelButton;
    JButton jButton1;
    JButton jButton2;
    JButton jButton3;
    JButton jButtonAdd;

    JButton jButton4;
    JButton jButton5;
    JButton jButton6;
    JButton jButtonJian;

    JButton jButton7;
    JButton jButton8;
    JButton jButton9;
    JButton jButtonMul;

    JButton jButton0;
    JButton jButtonChu;
    JButton jButtonHu;
    JButton jButtonEqual;
    int sum=0;
    String opString="";
	// 数字键的监听器
    public ActionListener buttonListener(String text){
        return new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                textField.setText(textField.getText()+text);
            }
        };
    }
    //清除键的监听器
    public ActionListener clearButtonListener(){
        return new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                textField.setText("");
            }
        };
    }
    //计算操作
    private void ops(){
        switch (opString) {
            case "+":
                if (textField.getText() != "") {
                    sum += Integer.parseInt(textField.getText());
                }
                else sum +=0;
                textField.setText(sum+"");
                opString="";
                break;
            case "-":
                if (textField.getText() != "") {
                    sum -= Integer.parseInt(textField.getText());
                }
                else sum -=0;
                textField.setText(sum+"");
                opString="";
                break;
            case "*":
                if (textField.getText() != "") {
                    sum *= Integer.parseInt(textField.getText());
                }
                else sum *=0;
                textField.setText(sum+"");
                opString="";
                break;
            case "/":
                if (textField.getText() != "") {
                    sum /= Integer.parseInt(textField.getText())!=0?Integer.parseInt(textField.getText()):1;
                }
                else sum /= 1;
                textField.setText(sum+"");
                opString="";
                break;
        }
    }
	//加减乘除及等于号的监听器
    public ActionListener optButtonListener(String op){
        return new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                if (op!="="){
                    ops();
                    opString=op;
                    if (textField.getText() != "") {
                        sum = Integer.parseInt(textField.getText());
                        textField.setText("");
                    }
                    else sum=0;
                }
                else {
                    ops();
                }
            }
        };
    }
	//初始化界面操作
    public MiniJisuanqi(){
        jPanelText = new JPanel();
        textField = new JTextField(25);
        textField.setText("");
        textField.setEditable(true);
        jPanelText.add(textField);
        jPanelButton = new JPanel(new GridLayout(4,4,10,10));
        jButton1 = new JButton("1");
        jButton1.addActionListener(buttonListener(jButton1.getText()));
        jButton2 = new JButton("2");
        jButton2.addActionListener(buttonListener(jButton2.getText()));
        jButton3 = new JButton("3");
        jButton3.addActionListener(buttonListener(jButton3.getText()));
        jButtonAdd = new JButton("+");
        jButtonAdd.addActionListener(optButtonListener(jButtonAdd.getText()));

        jButton4 = new JButton("4");
        jButton4.addActionListener(buttonListener(jButton4.getText()));
        jButton5 = new JButton("5");
        jButton5.addActionListener(buttonListener(jButton5.getText()));
        jButton6 = new JButton("6");
        jButton6.addActionListener(buttonListener(jButton6.getText()));
        jButtonJian = new JButton("-");
        jButtonJian.addActionListener(optButtonListener(jButtonJian.getText()));

        jButton7 = new JButton("7");
        jButton7.addActionListener(buttonListener(jButton7.getText()));
        jButton8 = new JButton("8");
        jButton8.addActionListener(buttonListener(jButton8.getText()));
        jButton9 = new JButton("9");
        jButton9.addActionListener(buttonListener(jButton9.getText()));
        jButtonMul = new JButton("*");
        jButtonMul.addActionListener(optButtonListener(jButtonMul.getText()));

        jButton0 = new JButton("0");
        jButton0.addActionListener(buttonListener(jButton0.getText()));
        jButtonChu = new JButton("/");
        jButtonChu.addActionListener(optButtonListener(jButtonChu.getText()));
        jButtonHu = new JButton("清除");
        jButtonHu.addActionListener(clearButtonListener());
        jButtonEqual = new JButton("=");
        jButtonEqual.addActionListener(optButtonListener(jButtonEqual.getText()));
        jPanelButton.add(jButton1);jPanelButton.add(jButton2);jPanelButton.add(jButton3);jPanelButton.add(jButtonAdd);
        jPanelButton.add(jButton4);jPanelButton.add(jButton5);jPanelButton.add(jButton6);jPanelButton.add(jButtonJian);
        jPanelButton.add(jButton7);jPanelButton.add(jButton8);jPanelButton.add(jButton9);jPanelButton.add(jButtonMul);
        jPanelButton.add(jButton0);jPanelButton.add(jButtonEqual);jPanelButton.add(jButtonHu);jPanelButton.add(jButtonChu);
        getContentPane().add("North",jPanelText);
        getContentPane().add("Center",jPanelButton);
    }
    主函数
    public static void main(String[] args) {
        MiniJisuanqi miniJisuanqi = new MiniJisuanqi();
        miniJisuanqi.setTitle("简单计算器");
        miniJisuanqi.setVisible(true);
        miniJisuanqi.pack();
        miniJisuanqi.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        miniJisuanqi.setResizable(false);
    }
}

以下是计算机初始化的样式。
计算机图片
如果因为jdk版本问题无法在switch中使用字符串则使用如下代码代替:

package wf;



import javax.swing.*;

import java.awt.*;

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;



public class MiniJisuanqi extends JFrame {

    JPanel jPanelText;

    JTextField textField;

    JPanel jPanelButton;

    JButton jButton1;

    JButton jButton2;

    JButton jButton3;

    JButton jButtonAdd;



    JButton jButton4;

    JButton jButton5;

    JButton jButton6;

    JButton jButtonJian;



    JButton jButton7;

    JButton jButton8;

    JButton jButton9;

    JButton jButtonMul;



    JButton jButton0;

    JButton jButtonChu;

    JButton jButtonHu;

    JButton jButtonEqual;

    int sum=0;

    public String opString="";

    public int opInt = 0;

	// 数字键的监听器

    public ActionListener buttonListener(final String text){

        return new ActionListener() {

            public void actionPerformed(ActionEvent e) {

                textField.setText(textField.getText()+text);

            }

        };

    }

    //清除键的监听器

    public ActionListener clearButtonListener(){

        return new ActionListener() {

            public void actionPerformed(ActionEvent e) {

                textField.setText("");

            }

        };

    }

    //计算操作

    private void ops(){

        switch (opInt) {

            case 1:

                if (textField.getText() != "") {

                    sum += Integer.parseInt(textField.getText());

                }

                else sum +=0;

                textField.setText(sum+"");

                opString="";

                opInt=0;

                break;

            case 2:

                if (textField.getText() != "") {

                    sum -= Integer.parseInt(textField.getText());

                }

                else sum -=0;

                textField.setText(sum+"");

                opString="";

                opInt=0;

                break;

            case 3:

                if (textField.getText() != "") {

                    sum *= Integer.parseInt(textField.getText());

                }

                else sum *=0;

                textField.setText(sum+"");

                opString="";

                opInt=0;

                break;

            case 4:

                if (textField.getText() != "") {

                    sum /= Integer.parseInt(textField.getText())!=0?Integer.parseInt(textField.getText()):1;

                }

                else sum /= 1;

                textField.setText(sum+"");

                opString="";

                opInt=0;

                break;

        }

    }

	//加减乘除及等于号的监听器

    public ActionListener optButtonListener(final String op){

        return new ActionListener() {

            public void actionPerformed(ActionEvent e) {

                if (!op.equals("=")){

                    ops();

                    opString=op;

                    if (op.equals("+")){

                    	MiniJisuanqi.this.opInt=1;

                    }else if (op.equals("-")){

                    	MiniJisuanqi.this.opInt=2;

                    }else if (op.equals("*")){

                    	MiniJisuanqi.this.opInt=3;

                    }else if (op.equals("/")){

                    	MiniJisuanqi.this.opInt=4;

                    }

                    //opInt=0;

                    if (textField.getText() != "") {

                        sum = Integer.parseInt(textField.getText());

                        textField.setText("");

                    }

                    else sum=0;

                }

                else {

                	System.out.println("dengyuhao  " + MiniJisuanqi.this.opInt);

                    ops();

                }

            }

        };

    }

	//初始化界面操作

    public MiniJisuanqi(){

        jPanelText = new JPanel();

        textField = new JTextField(25);

        textField.setText("");

        textField.setEditable(true);

        jPanelText.add(textField);

        jPanelButton = new JPanel(new GridLayout(4,4,10,10));

        jButton1 = new JButton("1");

        jButton1.addActionListener(buttonListener(jButton1.getText()));

        jButton2 = new JButton("2");

        jButton2.addActionListener(buttonListener(jButton2.getText()));

        jButton3 = new JButton("3");

        jButton3.addActionListener(buttonListener(jButton3.getText()));

        jButtonAdd = new JButton("+");

        jButtonAdd.addActionListener(optButtonListener(jButtonAdd.getText()));



        jButton4 = new JButton("4");

        jButton4.addActionListener(buttonListener(jButton4.getText()));

        jButton5 = new JButton("5");

        jButton5.addActionListener(buttonListener(jButton5.getText()));

        jButton6 = new JButton("6");

        jButton6.addActionListener(buttonListener(jButton6.getText()));

        jButtonJian = new JButton("-");

        jButtonJian.addActionListener(optButtonListener(jButtonJian.getText()));



        jButton7 = new JButton("7");

        jButton7.addActionListener(buttonListener(jButton7.getText()));

        jButton8 = new JButton("8");

        jButton8.addActionListener(buttonListener(jButton8.getText()));

        jButton9 = new JButton("9");

        jButton9.addActionListener(buttonListener(jButton9.getText()));

        jButtonMul = new JButton("*");

        jButtonMul.addActionListener(optButtonListener(jButtonMul.getText()));



        jButton0 = new JButton("0");

        jButton0.addActionListener(buttonListener(jButton0.getText()));

        jButtonChu = new JButton("/");

        jButtonChu.addActionListener(optButtonListener(jButtonChu.getText()));

        jButtonHu = new JButton("清除");

        jButtonHu.addActionListener(clearButtonListener());

        jButtonEqual = new JButton("=");

        jButtonEqual.addActionListener(optButtonListener(jButtonEqual.getText()));

        jPanelButton.add(jButton1);jPanelButton.add(jButton2);jPanelButton.add(jButton3);jPanelButton.add(jButtonAdd);

        jPanelButton.add(jButton4);jPanelButton.add(jButton5);jPanelButton.add(jButton6);jPanelButton.add(jButtonJian);

        jPanelButton.add(jButton7);jPanelButton.add(jButton8);jPanelButton.add(jButton9);jPanelButton.add(jButtonMul);

        jPanelButton.add(jButton0);jPanelButton.add(jButtonEqual);jPanelButton.add(jButtonHu);jPanelButton.add(jButtonChu);

        getContentPane().add("North",jPanelText);

        getContentPane().add("Center",jPanelButton);

    }

    //主函数

    public static void main(String[] args) {

        MiniJisuanqi miniJisuanqi = new MiniJisuanqi();

        miniJisuanqi.setTitle("简单计算器");

        miniJisuanqi.setVisible(true);

        miniJisuanqi.pack();

        miniJisuanqi.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        miniJisuanqi.setResizable(false);

    }

}


  • 13
    点赞
  • 84
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 11
    评论
评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

凉寒

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值