Java 简易计算器代码(只能整数的简易运算)

Posted qixq

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java 简易计算器代码(只能整数的简易运算)相关的知识,希望对你有一定的参考价值。

这是一个Java图形用户界面(GUI)写的一个简易计算器(只做了整数的简易运算,没做小数)!

我只是一个初学Java的小白,发这个只想想对自己的学习进行一个记录,可能有很多地方实现的并不好!

本文运行环境是:win10,JDK版本:jdk13.0.2,编译环境:IDEA2020.1

运行界面:

技术图片技术图片

实现代码:

addview()方法为输入框初始化和将输入框插入到窗口中!

addbutton()为按钮的初始化和按钮的插入!

内部类Acbutton是按钮的监听及处理!
package tools;

import java.awt.Color;
import java.awt.Font;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.Arrays;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JTextField;

/*
 * 计算器
 */
public class Calculator extends JFrame {
    private String szz1 = "", szz2 = "";
    private String fuhao = "";
    private JTextField jtField;
    int a,b;
    Acbutton acbutton;

    public Calculator() {
        this.setTitle("计算器");
        this.setSize(280, 320);
        this.setLocation(300, 200);
        this.setResizable(false);
        this.setLayout(null);
        // 调用插入显示框方法
        this.addview();
        // 调用插入按钮方法
        this.addbutton();
        this.setVisible(true);

    }

    // 插入显示框
    private void addview() {
        jtField = new JTextField("0");
        jtField.setBounds(5, 5, 340, 50);
        // 设置不可编辑
        jtField.setEditable(false);
        // 设置背景和字体
        jtField.setBackground(new Color(241, 241, 241, 255));
        jtField.setFont(new Font("宋体", Font.BOLD, 16));
        add(jtField);

    }

    // 插入按钮
    private void addbutton() {
        acbutton = new Acbutton();
        JButton B1, B2, B3, B4, B5, B6, B7, B8, B9, B0, Bf1, Bf2, Bf3, Bf4, Bf5, bC;
        B1 = new JButton("1");
        B2 = new JButton("2");
        B3 = new JButton("3");
        B4 = new JButton("4");
        B5 = new JButton("5");
        B6 = new JButton("6");
        B7 = new JButton("7");
        B8 = new JButton("8");
        B9 = new JButton("9");
        B0 = new JButton("0");
        Bf1 = new JButton("+");
        Bf2 = new JButton("-");
        Bf3 = new JButton("*");
        Bf4 = new JButton("/");
        Bf5 = new JButton("=");
        bC = new JButton("C");
        B1.addActionListener(acbutton);
        B2.addActionListener(acbutton);
        B3.addActionListener(acbutton);
        B4.addActionListener(acbutton);
        B5.addActionListener(acbutton);
        B6.addActionListener(acbutton);
        B7.addActionListener(acbutton);
        B8.addActionListener(acbutton);
        B9.addActionListener(acbutton);
        B0.addActionListener(acbutton);
        Bf1.addActionListener(acbutton);
        Bf2.addActionListener(acbutton);
        Bf3.addActionListener(acbutton);
        Bf4.addActionListener(acbutton);
        Bf5.addActionListener(acbutton);
        bC.addActionListener(acbutton);
        // 第一排按键1,2,3,+
        B1.setBounds(5, 60, 60, 50);
        B2.setBounds(70, 60, 60, 50);
        B3.setBounds(135, 60, 60, 50);
        Bf1.setBounds(200, 60, 60, 50);
        // 第二排按键4,5,6,-
        B4.setBounds(5, 115, 60, 50);
        B5.setBounds(70, 115, 60, 50);
        B6.setBounds(135, 115, 60, 50);
        Bf2.setBounds(200, 115, 60, 50);
        // 第三排按键7,8,9,*
        B7.setBounds(5, 170, 60, 50);
        B8.setBounds(70, 170, 60, 50);
        B9.setBounds(135, 170, 60, 50);
        Bf3.setBounds(200, 170, 60, 50);
        // 第四排按键C(清空输入的内容),0,=,/
        bC.setBounds(5, 225, 60, 50);
        B0.setBounds(70, 225, 60, 50);
        Bf5.setBounds(135, 225, 60, 50);
        Bf4.setBounds(200, 225, 60, 50);
        add(B1);
        add(B2);
        add(B3);
        add(Bf1);
        add(B4);
        add(B5);
        add(B6);
        add(Bf2);
        add(B7);
        add(B8);
        add(B9);
        add(Bf3);
        add(bC);
        add(B0);
        add(Bf5);
        add(Bf4);
    }

    class Acbutton implements ActionListener {
        // 监控按键被触发
        public void actionPerformed(ActionEvent e) {
            JButton btn = (JButton) e.getSource();
            String Sbin = btn.getText();
            String[] sz = { "1", "2", "3", "4", "5", "6", "7", "8", "9" };
            long i = Arrays.binarySearch(sz, Sbin);
            if (i >= 0) { // 点击按键为1~9的数字将数字加入字符串1
                szz1 = szz1 + Sbin;
            } else if (szz1 != "" && Sbin.equals("0")) { // 值为空时不能输入零
                szz1 = szz1 + "0";
            } else if (Sbin.equals("+") || Sbin.equals("-") || Sbin.equals("*") || Sbin.equals("/")) { // 判断输入是否运算符
                if (fuhao.equals("")) { // 输入运算符时,运算符字符串为空则将输入的运算符赋值给运算符字符串,将字符串1的值赋值给字符串2,并清空字符串1,
                    szz2 = szz1;
                    szz1 = "";
                    fuhao = Sbin;
                } else if (fuhao.equals("+") || fuhao.equals("-") || fuhao.equals("*") || fuhao.equals("/")) { // 判断输入运算符时运算符字符串不为空
                    if (szz1.equals("")) { // 判断字符串1为空,将新输入运算符替换原运算符字符串字符
                        fuhao = Sbin;
                    } else if (szz2.equals("")) { // 字符串1不为空,字符串2为空,将字符串2值作为0进行运算
                        a = 0;
                        b = Integer.parseInt(szz1);
                        szz1 = "";
                        if (fuhao.equals("+")) {
                            szz2 = (a + b) + "";
                        } else if (fuhao.equals("-")) {
                            szz2 = (a - b) + "";
                        } else if (fuhao.equals("*")) {
                            szz2 = (a * b) + "";
                        } else if (fuhao.equals("/")) {
                            szz2 = (a / b) + "";
                        }
                        a=0;
                        b=0;
                        fuhao = Sbin;
                    } else { // 字符串1,2不为空,运算符字符串有字符,将原式运算后值存入字符串2,将新输入运算符存入运算符字符串,
                        a = Integer.parseInt(szz2);
                        b = Integer.parseInt(szz1);
                        szz1 = "";
                        if (fuhao.equals("+")) {
                            szz2 = (a + b) + "";
                        } else if (fuhao.equals("-")) {
                            szz2 = (a - b) + "";
                        } else if (fuhao.equals("*")) {
                            szz2 = (a * b) + "";
                        } else if (fuhao.equals("/")) {
                            szz2 = (a / b) + "";
                        }
                        a=0;
                        b=0;
                        fuhao = Sbin;
                    }
                }
            } else if (Sbin.equals("=")) { // =按钮被点击监控,
                if (fuhao.equals("")) { // =被点击时判断有没有运算符号被存入;有运算符号根据输入的运算符号进行计算
                } else if (fuhao.equals("+") || fuhao.equals("-") || fuhao.equals("*") || fuhao.equals("/")) {
                    if (szz1.equals("")) { // 字符串1没有值时,将字符串2值赋值给字符串1值输出
                        szz1 = szz2;
                        szz2 = "";
                        fuhao = "";
                    } else if (szz2.equals("")) { // 字符串2为空,将字符串2值作为0进行运算
                        a = 0;
                        b = Integer.parseInt(szz1);
                        szz2 = "";
                        if (fuhao.equals("+")) { // 根据输入的运算符号进行计算
                            szz1 = (a + b) + "";
                        } else if (fuhao.equals("-")) {
                            szz1 = (a - b) + "";
                        } else if (fuhao.equals("*")) {
                            szz1 = (a * b) + "";
                        } else if (fuhao.equals("/")) {
                            szz1 = (a / b) + "";
                        }
                        a=0;
                        b=0;
                        fuhao="";
                    } else {
                        a = Integer.parseInt(szz2);
                        b = Integer.parseInt(szz1);
                        szz2 = "";
                        if (fuhao.equals("+")) { // 根据输入的运算符号进行计算
                            szz1 = (a + b) + "";
                        } else if (fuhao.equals("-")) {
                            szz1 = (a - b) + "";
                        } else if (fuhao.equals("*")) {
                            szz1 = (a * b) + "";
                        } else if (fuhao.equals("/")) {
                            szz1 = (a / b) + "";
                        }
                        a=0;
                        b=0;
                        fuhao="";
                    }
                }
            } else if (Sbin.equals("C")) { // C按钮监控,清空所有内容
                szz1 = "";
                szz2 = "";
                fuhao = "";
            }
            jtField.setText(szz1);
        }
    }

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

 

package 工具;

import java.awt.Color;
import java.awt.Font;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.Arrays;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JTextField;

/*
* 计算器
*/
public class Calculator extends JFrame {
private String szz1 = "", szz2 = "";
private String fuhao = "";
private JTextField jtField;
int a,b;
Acbutton acbutton;

public Calculator() {
this.setTitle("计算器");
this.setSize(280, 320);
this.setLocation(300, 200);
this.setResizable(false);
this.setLayout(null);
// 调用插入显示框方法
this.addview();
// 调用插入按钮方法
this.addbutton();
this.setVisible(true);

}

// 插入显示框
private void addview() {
jtField = new JTextField("0");
jtField.setBounds(5, 5, 340, 50);
// 设置不可编辑
jtField.setEditable(false);
// 设置背景和字体
jtField.setBackground(new Color(241, 241, 241, 255));
jtField.setFont(new Font("宋体", Font.BOLD, 16));
add(jtField);

}

// 插入按钮
private void addbutton() {
acbutton = new Acbutton();
JButton B1, B2, B3, B4, B5, B6, B7, B8, B9, B0, Bf1, Bf2, Bf3, Bf4, Bf5, bC;
B1 = new JButton("1");
B2 = new JButton("2");
B3 = new JButton("3");
B4 = new JButton("4");
B5 = new JButton("5");
B6 = new JButton("6");
B7 = new JButton("7");
B8 = new JButton("8");
B9 = new JButton("9");
B0 = new JButton("0");
Bf1 = new JButton("+");
Bf2 = new JButton("-");
Bf3 = new JButton("*");
Bf4 = new JButton("/");
Bf5 = new JButton("=");
bC = new JButton("C");
B1.addActionListener(acbutton);
B2.addActionListener(acbutton);
B3.addActionListener(acbutton);
B4.addActionListener(acbutton);
B5.addActionListener(acbutton);
B6.addActionListener(acbutton);
B7.addActionListener(acbutton);
B8.addActionListener(acbutton);
B9.addActionListener(acbutton);
B0.addActionListener(acbutton);
Bf1.addActionListener(acbutton);
Bf2.addActionListener(acbutton);
Bf3.addActionListener(acbutton);
Bf4.addActionListener(acbutton);
Bf5.addActionListener(acbutton);
bC.addActionListener(acbutton);
// 第一排按键1,2,3,+
B1.setBounds(5, 60, 60, 50);
B2.setBounds(70, 60, 60, 50);
B3.setBounds(135, 60, 60, 50);
Bf1.setBounds(200, 60, 60, 50);
// 第二排按键4,5,6,-
B4.setBounds(5, 115, 60, 50);
B5.setBounds(70, 115, 60, 50);
B6.setBounds(135, 115, 60, 50);
Bf2.setBounds(200, 115, 60, 50);
// 第三排按键7,8,9,*
B7.setBounds(5, 170, 60, 50);
B8.setBounds(70, 170, 60, 50);
B9.setBounds(135, 170, 60, 50);
Bf3.setBounds(200, 170, 60, 50);
// 第四排按键C(清空输入的内容),0,=,/
bC.setBounds(5, 225, 60, 50);
B0.setBounds(70, 225, 60, 50);
Bf5.setBounds(135, 225, 60, 50);
Bf4.setBounds(200, 225, 60, 50);
add(B1);
add(B2);
add(B3);
add(Bf1);
add(B4);
add(B5);
add(B6);
add(Bf2);
add(B7);
add(B8);
add(B9);
add(Bf3);
add(bC);
add(B0);
add(Bf5);
add(Bf4);
}

class Acbutton implements ActionListener {
// 监控按键被触发
public void actionPerformed(ActionEvent e) {
JButton btn = (JButton) e.getSource();
String Sbin = btn.getText();
String[] sz = { "1", "2", "3", "4", "5", "6", "7", "8", "9" };
long i = Arrays.binarySearch(sz, Sbin);
if (i >= 0) { // 点击按键为1~9的数字将数字加入字符串1
szz1 = szz1 + Sbin;
} else if (szz1 != "" && Sbin.equals("0")) { // 值为空时不能输入零
szz1 = szz1 + "0";
} else if (Sbin.equals("+") || Sbin.equals("-") || Sbin.equals("*") || Sbin.equals("/")) { // 判断输入是否运算符
if (fuhao.equals("")) { // 输入运算符时,运算符字符串为空则将输入的运算符赋值给运算符字符串,将字符串1的值赋值给字符串2,并清空字符串1,
szz2 = szz1;
szz1 = "";
fuhao = Sbin;
} else if (fuhao.equals("+") || fuhao.equals("-") || fuhao.equals("*") || fuhao.equals("/")) { // 判断输入运算符时运算符字符串不为空
if (szz1.equals("")) { // 判断字符串1为空,将新输入运算符替换原运算符字符串字符
fuhao = Sbin;
} else if (szz2.equals("")) { // 字符串1不为空,字符串2为空,将字符串2值作为0进行运算
a = 0;
b = Integer.parseInt(szz1);
szz1 = "";
if (fuhao.equals("+")) {
szz2 = (a + b) + "";
} else if (fuhao.equals("-")) {
szz2 = (a - b) + "";
} else if (fuhao.equals("*")) {
szz2 = (a * b) + "";
} else if (fuhao.equals("/")) {
szz2 = (a / b) + "";
}
a=0;
b=0;
fuhao = Sbin;
} else { // 字符串1,2不为空,运算符字符串有字符,将原式运算后值存入字符串2,将新输入运算符存入运算符字符串,
a = Integer.parseInt(szz2);
b = Integer.parseInt(szz1);
szz1 = "";
if (fuhao.equals("+")) {
szz2 = (a + b) + "";
} else if (fuhao.equals("-")) {
szz2 = (a - b) + "";
} else if (fuhao.equals("*")) {
szz2 = (a * b) + "";
} else if (fuhao.equals("/")) {
szz2 = (a / b) + "";
}
a=0;
b=0;
fuhao = Sbin;
}
}
} else if (Sbin.equals("=")) { // =按钮被点击监控,
if (fuhao.equals("")) { // =被点击时判断有没有运算符号被存入;有运算符号根据输入的运算符号进行计算
} else if (fuhao.equals("+") || fuhao.equals("-") || fuhao.equals("*") || fuhao.equals("/")) {
if (szz1.equals("")) { // 字符串1没有值时,将字符串2值赋值给字符串1值输出
szz1 = szz2;
szz2 = "";
fuhao = "";
} else if (szz2.equals("")) { // 字符串2为空,将字符串2值作为0进行运算
a = 0;
b = Integer.parseInt(szz1);
szz2 = "";
if (fuhao.equals("+")) { // 根据输入的运算符号进行计算
szz1 = (a + b) + "";
} else if (fuhao.equals("-")) {
szz1 = (a - b) + "";
} else if (fuhao.equals("*")) {
szz1 = (a * b) + "";
} else if (fuhao.equals("/")) {
szz1 = (a / b) + "";
}
a=0;
b=0;
fuhao="";
} else {
a = Integer.parseInt(szz2);
b = Integer.parseInt(szz1);
szz2 = "";
if (fuhao.equals("+")) { // 根据输入的运算符号进行计算
szz1 = (a + b) + "";
} else if (fuhao.equals("-")) {
szz1 = (a - b) + "";
} else if (fuhao.equals("*")) {
szz1 = (a * b) + "";
} else if (fuhao.equals("/")) {
szz1 = (a / b) + "";
}
a=0;
b=0;
fuhao="";
}
}
} else if (Sbin.equals("C")) { // C按钮监控,清空所有内容
szz1 = "";
szz2 = "";
fuhao = "";
}
jtField.setText(szz1);
}
}

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

以上是关于Java 简易计算器代码(只能整数的简易运算)的主要内容,如果未能解决你的问题,请参考以下文章

求JAVA编的简易计算器,急急急

js代码借助函数eval制作简易计算器

java加法计算器代码

Java Swing 编写一款简易计算软件

Java Swing 编写一款简易计算软件

用JavaScript做一个简易的计算器