Java简单计算器的制作


实现基本的加,减,乘,除,乘方等功能。

import javax.swing.*;
import java.awt.*;
import java.awt.datatransfer.Clipboard;
import java.awt.datatransfer.StringSelection;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.math.BigDecimal;
import java.math.BigInteger;
public class caculate extends JFrame {
    private String number;//存储输入的数
    private JTextField jx;
    private String a;//存储前一个数
    private String b;//存储后一个数
    private final String Add = "+";//加
    private final String Sub = "-";//减
    private final String Multi = "x";//乘
    private final String Dev = "/";//除
    private String abs;//存储运算符号
    private String result;//存储结果
    private BigDecimal b1;
    private BigDecimal b2;
    private int pone;
    //private int flag =0;
    private BigInteger number1;
    private Clipboard clipboard;
    public caculate()
    {
        number = "";
        result = "";
        a = "";
        b = "";
        pone = 0;
        clipboard = this.getToolkit().getSystemClipboard();
        Initi();
    }
    private void Initi()//初始化窗口
    {
        this.setTitle("计算器");
        this.setBounds(300,300,400,400);
        this.setLayout(null);
        creatUI();
        this.setVisible(true);
        this.setResizable(false);
        this.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
    }
    private void creatUI()//制作界面
    {
        addMean();
        addText();
        addnumber();
        addOther();
    }
    private void addMean()
    {
        JMenuBar bar = new JMenuBar();
        this.setJMenuBar(bar);
        JMenu help = new JMenu("编辑(E)");
        bar.add(help);
        JMenuItem item = new JMenuItem("复制");
        help.add(item);
        item.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_C,KeyEvent.VK_CLEAR));
        item.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                String text = jx.getText();
                StringSelection stringSelection =  new StringSelection(text);
                clipboard.setContents(stringSelection,null);
            }
        });
    }
    /**
     * 键盘输入
     */
    private void addText()
    {
        jx = new JTextField();
        jx.setBounds(10,10,380,28);
        jx.setFont(new Font("Dialog",0,16));
        jx.setBorder(BorderFactory.createEtchedBorder(Color.lightGray,Color.gray));
        jx.addKeyListener(new KeyListener() {
            @Override
            public void keyTyped(KeyEvent e) {
                if((e.getKeyChar()>='0'&&e.getKeyChar()<='9')||e.getKeyChar()=='.')
                {
                    if(jx==null&&e.getKeyChar()=='.')
                    {
                        e.consume();
                    }else {

                    }
                    String str = Character.toString(e.getKeyChar());
                    setnumber(str);
                }
                else {
                    e.consume();
                }
                if(e.getKeyChar()=='+')
                {
                    setMethod(Add);
                }
                if(e.getKeyChar()=='-')
                {
                    setMethod(Sub);
                }
                if(e.getKeyChar()=='*')
                {
                    setMethod(Multi);
                }
                if(e.getKeyChar()=='/')
                {
                    setMethod(Dev);
                }
                if(e.getKeyChar()==KeyEvent.VK_ENTER)
                {
                    Cacualte();
                    display();
                }
                if(e.getKeyChar()==KeyEvent.VK_BACK_SPACE)
                {
                    number = jx.getText();
                }
            }
            @Override
            public void keyPressed(KeyEvent e) {

            }
            @Override
            public void keyReleased(KeyEvent e) {
            }
        });
        this.add(jx);
    }
    public void setnumber(String number)
    {
        this.number += number;
    }
    public void delete()
    {
        if(number.length()!=0) {
            number = number.substring(0, number.length() - 1);
        }
    }
    /**
     * 添加数字按键
     */
    public void addnumber()
    {
        JButton button7 = new JButton("7");
        button7.setBounds(10,45,70,70);
        this.add(button7);
        button7.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                setnumber("7");
                jx.setText(number);
            }
        });
        JButton button8 = new JButton("8");
        button8.setBounds(90,45,70,70);
        this.add(button8);
        button8.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                setnumber("8");
                jx.setText(number);
            }
        });
        JButton button9 = new JButton("9");
        button9.setBounds(170,45,70,70);
        this.add(button9);
        button9.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                setnumber("9");
                jx.setText(number);
            }
        });
        JButton button4 = new JButton("4");
        button4.setBounds(10,125,70,70);
        this.add(button4);
        button4.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                setnumber("4");
                jx.setText(number);
            }
        });
        JButton button5 = new JButton("5");
        button5.setBounds(90,125,70,70);
        this.add(button5);
        button5.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                setnumber("5");
                jx.setText(number);
            }
        });
        JButton button6 = new JButton("6");
        button6.setBounds(170,125,70,70);
        this.add(button6);
        button6.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                setnumber("6");
                jx.setText(number);
            }
        });
        JButton button1 = new JButton("1");
        button1.setBounds(10,205,70,70);
        this.add(button1);
        button1.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                setnumber("1");
                jx.setText(number);
            }
        });
        JButton button3 = new JButton("3");
        button3.setBounds(170,205,70,70);
        this.add(button3);
        button3.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                setnumber("3");
                jx.setText(number);
            }
        });
        JButton button2 = new JButton("2");
        button2.setBounds(90,205,70,70);
        this.add(button2);
        button2.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                setnumber("2");
                jx.setText(number);
            }
        });

    }
    /**
     * 添加其他和运算按钮
     * @param
     */
    public void addOther()
    {
        JButton Ec = new JButton("MC");
        Ec.setBounds(250,45,70,70);
        this.add(Ec);
        Ec.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                jx.setText("0");
                number ="";
                a = "";
                b = "";
                result = "";
                //flag = 0;
            }
        });
        JButton buttondeAll = new JButton("delete");
        buttondeAll.setBounds(320,45,70,70);
        this.add(buttondeAll);
        buttondeAll.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                delete();
                jx.setText(number);
            }
        });
        JButton sub = new JButton(Sub);
        sub.setBounds(320,125,70,70);
        this.add(sub);
        sub.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                    setMethod(Sub);
            }
        });
        JButton add = new JButton(Add);
        add.setBounds(250,125,70,70);
        this.add(add);
        add.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                setMethod(Add);
            }
        });

        JButton multi = new JButton(Multi);
        multi.setBounds(250,205,70,70);
        this.add(multi);
        multi.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                setMethod(Multi);
            }
        });
        JButton dev = new JButton(Dev);
        dev.setBounds(320,205,70,70);
        this.add(dev);
        dev.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                setMethod(Dev);
            }
        });
        JButton equals = new JButton("=");
        equals.setBounds(250,285,140,70);
        this.add(equals);
        equals.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                Cacualte();
                display();
            }
        });
        JButton point = new JButton(".");
        point.setBounds(10,285,70,70);
        this.add(point);
        point.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                if(!jx.getText().contains(".")) {
                    if(jx.getText().length()!=0) {//在无数字时输入小数点无效
                        setnumber(".");
                        jx.setText(number);
                    }
                }
            }
        });
        JButton pow = new JButton("pow");
        pow.setBounds(90,285,70,70);
        this.add(pow);
        pow.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                setMethod("pow");
            }
        });
        JButton sqrt = new JButton("+/-");
        sqrt.setBounds(170,285,70,70);
        this.add(sqrt);
        sqrt.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                if(!jx.getText().contains("-"))
                {
                    setnumber("-");
                    jx.setText(number);
                }
            }
        });
        jx.getCaret().setVisible(true);
    }
    public void setMethod(String menthod)
    {
        if(result=="" && a=="") {//不以上次结果进行二次计算
            a = jx.getText();
        }
        if(result!="")//以上次结果进行再次计算
        {
            a = result;
            if(a!=jx.getText())
            {
                a = jx.getText();
            }
            result = "";
        }
        abs = menthod;
        number = "";
        jx.setText(number);
    }
    public void display()
    {
        if(result!="") {
            jx.setText(result);
        }else if(b=="")
        {
            jx.setText(a);
        }else{
            jx.setText(b);
        }
    }
    /**
     * 运算函数
     */
    public void Cacualte()
    {
        if (jx.getText()==null) {
            result = null;
        } else{
            b = jx.getText();
            if(abs!="pow") {
                if(a.length()!=0&&b.length()!=0) {
                    b1 = new BigDecimal(a);
                    b2 = new BigDecimal(b);
                    if (abs.equals(Add)) {
                        result = b1.add(b2).toString();
                    } else if (abs.equals(Multi)) {
                        result = (b1.multiply(b2).toString());
                    } else if (abs.equals(Sub)) {
                        result = (b1.subtract(b2).toString());
                    } else if (abs.equals(Dev)) {
                        result = (b1.divide(b2).toString());
                    }
                }
            }else{
                if(a.contains(".")||b.contains("."))
                {
                    number = "";
                    a = "";
                    b = "";
                    JOptionPane.showConfirmDialog(null,"输入错误!","Error",JOptionPane.CLOSED_OPTION);
                    jx.setText("");
                }else {
                    number1 = new BigInteger(a);
                    pone = Integer.valueOf(b);
                    result = number1.pow(pone).toString();
                }
            }
            number = "";
        }
    }

Main函数

public class Main {
    public static void main(String[] args) {
        new caculate();
    }
}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值