java简易计算器

import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.*;//导入包

public class simple_Calculator extends JFrame {
    JFrame jfr = new JFrame("简易计算器");//顶层容器

    //6行,6个面板组件
    JPanel jp1=new JPanel();
    JPanel jp2 = new JPanel();
    JPanel jp3 = new JPanel();
    JPanel jp4 = new JPanel();
    JPanel jp5 = new JPanel();
    JPanel jp6 = new JPanel();
    //4个JLablel组件
    JLabel jl1=new JLabel("简易计算器");
    JLabel jl2=new JLabel("运算数一");
    JLabel jl3=new JLabel("运算数二");
    JLabel jl4=new JLabel("运算结果");
    JLabel space = new JLabel(" ".repeat(10));
    //3个文本框
    JTextField jtf1 = new JTextField(10);
    JTextField jtf2 = new JTextField(10);
    JTextField jtf3 = new JTextField(10);
    //3个按钮
    JButton jb1 = new JButton("相加");
    JButton jb2 = new JButton("相减");
    JButton jb3 = new JButton("全部清零");

    public static void main(String[] args) {
        simple_Calculator window=new simple_Calculator();
    }

    public simple_Calculator() {


        //添加组件到面板
        jp1.add(jl1);

        jp2.add(jl2);
        jp2.add(jtf1);

        jp3.add(jl3);
        jp3.add(jtf2);

        jp4.add(jl4);
        jp4.add(jtf3);

        jp5.add(jb1);
        jp5.add(space);
        jp5.add(jb2);

        jp6.add(jb3);
        //添加面板到窗体
        jfr.add(jp1);
        jfr.add(jp2);
        jfr.add(jp3);
        jfr.add(jp4);
        jfr.add(jp5);
        jfr.add(jp6);

        //特殊设置
        jtf3.setEnabled(false);//运算结果不能变动


        //设置contentpane布局
        jfr.setLayout(new GridLayout(6,1));
        jfr.setTitle("简易计算器");
        jfr.setSize(300,380);
        jfr.setResizable(false);
        jfr.setVisible(true);
        // JFrame在屏幕居中
        jfr.setLocationRelativeTo(null);
        jfr.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        //添加监听
        jb3.addActionListener(new my_ActionListener());
        jb1.addActionListener(new my_ActionListener());
        jb2.addActionListener(new my_ActionListener());
//        jb1.addActionListener(new sum_ActionListener());
//        jb2.addActionListener(new sub_ActionListener());
//        jb3.addActionListener(new zoro_ActionListener());
    }

    //    //创建相加,相减,清零的三个监听器
//    public class sum_ActionListener implements ActionListener {
//        @Override
//        public void actionPerformed(ActionEvent e) {
//            String a=jtf1.getText();
//            float num_a = Float.parseFloat(a);
//            String b=jtf2.getText();
//            float num_b = Float.parseFloat(b);
//
//            float num_c=num_a+num_b;
//            String c = Float.toString(num_c);
//
//            jtf3.setText(c);
//        }
//    }
//    public class sub_ActionListener implements ActionListener {
//        @Override
//        public void actionPerformed(ActionEvent e) {
//            String a=jtf1.getText();
//            float num_a = Float.parseFloat(a);
//            String b=jtf2.getText();
//            float num_b = Float.parseFloat(b);
//
//            float num_c=num_a-num_b;
//            String c = Float.toString(num_c);
//
//            jtf3.setText(c);
//        }
//    }
//    public class zoro_ActionListener implements ActionListener {
//        @Override
//        public void actionPerformed(ActionEvent e) {
//            jtf1.setText("");
//            jtf2.setText("");
//            jtf3.setText("");
//        }
//    }
    public class my_ActionListener implements ActionListener {

        @Override
        public void actionPerformed(ActionEvent e) {
            if (e.getSource() == jb3) {//获取事假源并判断
            jtf1.setText("");//清零
            jtf2.setText("");
            jtf3.setText("");
            } else if ((e.getSource() == jb1)) {//相加
                if(erro())
                {
                    jtf1.setText("");//清零
                    jtf2.setText("");
                    jtf3.setText("");
                    return;
                }
                String a=jtf1.getText();
                float num_a = Float.parseFloat(a);
                String b=jtf2.getText();
                float num_b = Float.parseFloat(b);

                float num_c=num_a+num_b;
                String c = Float.toString(num_c);

                jtf3.setText(c);
            }
            else if ((e.getSource() == jb2)) {//相加
                if(erro())
                {
                    jtf1.setText("");//清零
                    jtf2.setText("");
                    jtf3.setText("");
                    return;
                }
                String a=jtf1.getText();
                float num_a = Float.parseFloat(a);
                String b=jtf2.getText();
                float num_b = Float.parseFloat(b);

                float num_c=num_a-num_b;
                String c = Float.toString(num_c);

                jtf3.setText(c);
            }

        }

        public boolean erro() {
            String a=jtf1.getText();
            String b=jtf2.getText();
            int lena = a.length();
            int lenb = b.length();
            int suma=0;
            int sumb=0;
            if (a.equals("") || b.equals("")) {//判断数据是否完整
                JOptionPane.showMessageDialog(null, "数据未输入完整","erro",0);
                return true;
            }

            for (int i = 0; i < lena; i++) {//判断运算数一的非法字符,小数点个数
                if ((a.charAt(i) < '0'||a.charAt(i) > '9')&& a.charAt(i)!='.') {
                    JOptionPane.showMessageDialog(null, "运算数一含有非法字符","erro",0);
                    return true;
                }

                if (a.charAt(i)=='.') {
                    suma++;
                }
                if (suma > 1) {
                    JOptionPane.showMessageDialog(null, "运算数一小数点个数不符合规范","erro",0);
                    return true;
                }
            }

            for (int i = 0; i < lenb; i++) {//判断运算数二的非法字符,小数点个数
                if ((b.charAt(i) < '0'||b.charAt(i) > '9')&& b.charAt(i)!='.') {
                    JOptionPane.showMessageDialog(null, "运算数二含有非法字符","erro",0);
                    return true;
                }

                if (b.charAt(i)=='.') {
                    sumb++;
                }
                if (sumb > 1) {
                    JOptionPane.showMessageDialog(null, "运算数二小数点个数不符合规范","erro",0);
                    return true;
                }
            }
            //判断小数点位置
            if( a.charAt((a.length()-1)) == '.' || a.charAt(0) == '.' )
            {
                JOptionPane.showMessageDialog(null, "运算数一的小数点位置有误","erro",0);
                return true;
            }
            if( b.charAt((b.length()-1)) == '.' || b.charAt(0) == '.' )
            {
                JOptionPane.showMessageDialog(null, "运算数二的小数点位置有误","erro",0);
                return true;
            }


            return false;
        }
    }
}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值