用java实现一个计算器的功能

程序是由Java中的可视化界面swing类来实现,废话不多说,直接上源码:

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

public class Calculate {
    public static void main(String[] args) {
        new ComputFrame("计算器");
    }
}
class ComputFrame extends JFrame implements ActionListener{
    JTextField inputText;
    JPanel numberPanel,operPanel;
    JButton[] numBtn,operBtn;
    public ComputFrame(String title) {
        super(title);
        this.setSize(600,500);
        this.setLocationRelativeTo(null);
        this.setVisible(true);
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        initComp();
        addComptoFrame();
        this.validate();
    }

    private void addComptoFrame()  {
        this.add(inputText,BorderLayout.NORTH);
        this.add(numberPanel,BorderLayout.CENTER);
        this.add(operPanel,BorderLayout.EAST);
    }

    private void initComp() {
        inputText=new JTextField();
        numberPanel=new JPanel();
        numberPanel.setLayout(new GridLayout(3,3));
        operPanel=new JPanel();
        operPanel.setLayout(new GridLayout(6,1));
        numBtn=new JButton[9];
        for(int i=0;i<numBtn.length;i++){
            numBtn[i]=new JButton(""+i);
            numberPanel.add(numBtn[i]);
            numBtn[i].addActionListener(this);
        }
        operBtn=new JButton[6];
        String oper[]={"del","+","-","*","/","="};
        for(int i=0;i<oper.length;i++){
            operBtn[i]=new JButton(oper[i]);
            operPanel.add(operBtn[i]);
            operBtn[i].addActionListener(this);
        }
    }

    String str="";
    @Override
    public void actionPerformed(ActionEvent e) {

        str+=e.getActionCommand();
        inputText.setText(str);
        if("=".equalsIgnoreCase(e.getActionCommand())){
            String[] a=str.split("\\D+");
            String[] oper=str.split("\\d+");
            int b=Integer.parseInt(a[0]);
            int c=Integer.parseInt(a[1]);
            if("+".equals(oper[1])){

                inputText.setText(a[0]+oper[1]+a[1]+"="+String.valueOf(b+c));
            }if("-".equals(oper[1])){

                inputText.setText(a[0]+oper[1]+a[1]+"="+String.valueOf(b-c));
            }if("*".equals(oper[1])){

                inputText.setText(a[0]+oper[1]+a[1]+"="+String.valueOf(b*c));
            }if("/".equals(oper[1])){

                inputText.setText(str+String.valueOf(b/c));
            }
        }
        if("del".equals(e.getActionCommand())){
            str=str.substring(0,str.length()-4);
            inputText.setText(str);
        }
    }
}

运行结果如下:7*8=56

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

曼诺尔雷迪亚兹

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

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

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

打赏作者

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

抵扣说明:

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

余额充值