java简易计算器

此小程序用java语言实现了计算器的基本功能,喜欢直接分享代码:

import java.awt.*;
import java.awt.event.*;

import javax.swing.*;

public class SimpleCalc extends JFrame{
    private static final long serialVersionUID = 1L;
    String[] labels = {"←","CE","±","√",
                "7","8","9","/",
                "4","5","6","*",
                "1","2","3","-",
                "0",".","=","+"};
    JButton[] btn;
    JTextField tf;
    Double n1 = 0.0, n2 = 0.0;
    String opt = "";
    SimpleCalc(String name)
    {
        super(name);
        this.setVisible(true);
        this.setBounds(400,300,300,400);
        this.addWindowListener(new WindowAdapter()
        {
            public void windowClosing(WindowEvent e)
            {
                System.exit(0);
            }
        });        
        
    }
    public void init()
    {
        tf = new JTextField();
        tf.setComponentOrientation(ComponentOrientation.LEFT_TO_RIGHT);
        tf.setFont(new Font("宋体", 30,20));
        btn = new JButton[labels.length];
        for(int i=0;i<labels.length;i++)
        {
            btn[i] = new JButton(labels[i]);
            btn[i].setForeground(Color.blue);
            //System.out.print(btn[i].getActionCommand()+" ");
        }    
                
        JPanel p = new JPanel();
        p.setLayout(new GridLayout(5,5,3,3));
        for(int i=0;i<labels.length;i++)
            p.add(btn[i]);
        this.add(BorderLayout.NORTH,tf);
        this.add(BorderLayout.CENTER,p);

        this.pack();
        
        for(int i=0;i<labels.length;i++)
            btn[i].addActionListener(new Monitor());    
        
    }
    
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        new SimpleCalc("java简易计算器").init();
    }
    
    class Monitor implements ActionListener
    {

        @Override
        public void actionPerformed(ActionEvent e) {
        try{
            
            String cmd = e.getActionCommand();
            if(cmd.equals("0")||cmd.equals("1")||cmd.equals("2")||cmd.equals("3")||cmd.equals("4")||
                    cmd.equals("5")||cmd.equals("6")||cmd.equals("7")||cmd.equals("8")||cmd.equals("9"))
            {
                tf.setText(tf.getText().trim()+e.getActionCommand());
                n1 = Double.parseDouble(tf.getText().trim());
            }
            if(cmd.equals("←"))
            {
                tf.setText(tf.getText().trim().substring(0,tf.getText().trim().length()-1));
            }
            else if(cmd.equals("CE"))
            {
                tf.setText("");
            }
            else if(cmd.equals("±"))
            {
                
                n1 = Double.parseDouble(tf.getText().trim());
                tf.setText(-n1+"");
            }
            else if(cmd.equals("√"))
            {
                n1 = Double.parseDouble(tf.getText().trim());
                tf.setText(Math.sqrt(n1)+"");
            }
            else if(cmd.equals("+"))
            {    
                n2 = Double.parseDouble(tf.getText().trim());
                opt = "+";
                tf.setText("");
            }
            else if(cmd.equals("-"))
            {
                opt = "-";
                n2 = Double.parseDouble(tf.getText().trim());
                tf.setText("");
            }
            else if(cmd.equals("*"))
            {
                opt = "*";
                n2 = Double.parseDouble(tf.getText().trim());
                tf.setText("");
            }
            else if(cmd.equals("/"))
            {
                opt = "/";
                n2 = Double.parseDouble(tf.getText().trim());
                tf.setText("");
            }
            else if(cmd.equals("."))
            {
                if(tf.getText().trim().indexOf(".") != -1) //字符串中已经包含了小数点不做任何操作
                { 
                } 
                else //如果没有小数点 
                {        
                    if(tf.getText().trim().equals("0"))//如果开始为0
                    {
                        tf.setText(("0"+e.getActionCommand()).toString());
                    }
                    else if(tf.getText().trim().equals(""))//如果初时显示为空不做任何操作
                    {            
                    }
                    else
                    {
                        tf.setText((tf.getText()+e.getActionCommand()).toString());
                    }
                }
            }
            else if(cmd.equals("="))
            {
                if(opt.equals("+"))
                    tf.setText((n2+n1)+"");
                else if(opt.equals("-"))
                    tf.setText((n2-n1)+"");
                else if(opt.equals("*"))
                    tf.setText((n2*n1)+"");
                else if(opt.equals("/"))
                {
                    if(n1 == 0)
                        tf.setText("除数不能为0");
                    else
                        tf.setText((n2/n1)+"");
                }
            }
        }catch(Exception ee){}
        }  
    }
}

运行结果:

还是比较好看的,菜单还有快捷键还可以作为补充添加上去就比较仿windows计算器了。

转载于:https://www.cnblogs.com/UUUP/p/3812593.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值