zoukankan      html  css  js  c++  java
  • Java--计算器小程序

     原创见  https://blog.csdn.net/mitongxue/article/details/90489434

    @别偷我能量

    package com.company;
    
    import javax.swing.*;
    import java.awt.*;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    
    public class CaculatorDemo {
        public static void main(String[] args) {
            JS win=new JS();
        }
    }
    class JS extends JFrame implements ActionListener{
        private StringBuilder sBuilder = new StringBuilder();  //利用StringBuilder类来显示,以及区分两个操作数
        JTextArea text=new JTextArea();
        double a,b;
        Double sum;
        int i;
        public JS()
        {
            setBounds(100,100,400,400);
            setTitle("Calculator");
            this.setLayout(new BorderLayout());//添加文本框
            JPanel p1 = new JPanel();
            JPanel p2 = new JPanel();
            text.setPreferredSize(new Dimension (370,60));//设置组件大小
            p2.setLayout(new FlowLayout());
            p1.add(text);
            this.add(p1,BorderLayout.NORTH);
    
    
            p2.setLayout(new GridLayout(5,4));    //添加按钮
            JButton button[]=new JButton[16];
    
            button[0]=new JButton("7");
            button[1]=new JButton("8");
            button[2]=new JButton("9");
            button[3]=new JButton("+");  //加号
    
            button[4]=new JButton("4");
            button[5]=new JButton("5");
            button[6]=new JButton("6");
            button[7]=new JButton("—");  //减号
    
            button[8]=new JButton("1");
            button[9]=new JButton("2");
            button[10]=new JButton("3");
            button[11]=new JButton("x");  //乘号
    
            button[12]=new JButton("0");
            button[13]=new JButton(".");  //小数点
            button[14]=new JButton("="); //等于
            button[15]=new JButton("÷");   //除法
    
            for(int i=0;i<button.length;i++ )    //将组件加入容器
                p2.add(button[i]);
           // button[15].setBackground(Color.ORANGE);//设置按钮的背景颜色为橙色
            p2.add(button[15]);
            add(p2,BorderLayout.CENTER);
    
            for(int i=0;i<button.length;i++)    //为每一个事件(按钮)添加监视器
                button[i].addActionListener(this);
    
            this.setVisible(true);
            this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //点击X号可以关闭程序
        }
    
        public void actionPerformed(ActionEvent e) //事件处理
        {
            // TODO Auto-generated method stub
            String lab = e.getActionCommand();            //得到当前的按钮字符,后面进行匹配
    
            if(lab.equals("0"))                                //处理按钮 0~9
            {
                sBuilder.append("0");        //利用StringBuilder类的对象调用方法,将数据存起来
                text.setText(sBuilder.toString());    //显示之前所有输入的数据
            }
            else if(lab.equals("1"))
            {
                sBuilder.append("1");        //利用StringBuilder类的对象调用方法,将数据存起来
                text.setText(sBuilder.toString());    //显示之前所有输入的数据
            }
            else if(lab.equals("2"))
            {
                sBuilder.append("2");        //利用StringBuilder类的对象调用方法,将数据存起来
                text.setText(sBuilder.toString());     //显示之前所有输入的数据
            }
            else if(lab.equals("3"))
            {
                sBuilder.append("3");        //利用StringBuilder类的对象调用方法,将数据存起来
                text.setText(sBuilder.toString());    //显示之前所有输入的数据
            }
            else if(lab.equals("4"))
            {
                sBuilder.append("4");
                text.setText(sBuilder.toString());
            }
            else if(lab.equals("5"))
            {
                sBuilder.append("5");
                text.setText(sBuilder.toString());
            }
            else if(lab.equals("6"))
            {
                sBuilder.append("6");
                text.setText(sBuilder.toString());
            }
            else if(lab.equals("7"))
            {
                sBuilder.append("7");
                text.setText(sBuilder.toString());
            }
    
            else if(lab.equals("8"))
            {
                sBuilder.append("8");
                text.setText(sBuilder.toString());
            }
            else if(lab.equals("9"))
            {
                sBuilder.append("9");
                text.setText(sBuilder.toString());
            }
    
    
            else if(lab.equals("."))                        // 处理按钮 "." 事件
            {
                sBuilder.append(".");                        //利用StringBuilder类的对象调用方法,将数据存起来
                text.setText(sBuilder.toString());            //显示之前输入的数据
            }
    
            else if(lab.equals("+"))    //处理+"按钮乘法
            {
                a = Double.parseDouble(sBuilder.toString());    //将 运算符 之前的数据 作为第一个操作数 a
                i=0;
                sBuilder = new StringBuilder();                    //将数组清空来存储第二个操作数 b
                text.setText("+");
            }
            else if(lab.equals("—"))        //处理"—"按钮乘法
            {
                a = Double.parseDouble(sBuilder.toString());    //将前面的输入的数 作为第一个操作数a
                i=1;                                                //标记运算类型  即"÷"之前的数据即将作为因数
                sBuilder = new StringBuilder();                    //将数组清空来存储第二个操作数 b
                text.setText("—");
            }
            else if(lab.equals("x"))        //处理"x"按钮乘法
            {
                a = Double.parseDouble(sBuilder.toString());    //将前面的输入的数 作为第一个操作数a
                i=2;                                            //标记运算类型  即"÷"之前的数据即将作为因数
                sBuilder = new StringBuilder();                    //将数组清空来存储第二个操作数 b
                text.setText("x");
            }
            else if(lab.equals("÷"))        //处理"÷"按钮事件
            {
                i=3;                                            //标记运算类型  即"÷"之前的数据即将作为被除数
                a = Double.parseDouble(sBuilder.toString());    //将除法的输入的数 作为第一个操作数a
                sBuilder = new StringBuilder();                    //将数组清空来存储第二个操作数 b
                text.setText("÷");
            }
    
    
            else if(lab.equals("="))
            {
                b = Double.parseDouble(sBuilder.toString());    //一遇到"=",我们就能得到第二个操作数b
                if (i == 0)            //加法 a+b
                {
                    sum=a+b;
                    text.setText(sum.toString());        //输出第二个操作数已经输入的数据
                    sBuilder = new StringBuilder();        //清空数据,为后面的操作数留空间
                    sBuilder.append(sum);
                }
                else if (i == 1)     //减法  a-b
                {
                    sum = a - b;
                    text.setText(sum.toString());
                    sBuilder = new StringBuilder();        //清空数据,为后面的操作数留空间
                    sBuilder.append(sum);
                }
                else if (i == 2)     //乘法  a*b
                {
                    sum = a * b;
                    text.setText(sum.toString());
                    sBuilder = new StringBuilder();
                    sBuilder.append(sum);
                }
                else if (i == 3)     //除法 a÷b
                {
                    sum = a / b;
                    text.setText(sum.toString());
                    sBuilder = new StringBuilder();
                    sBuilder.append(sum);
                }
                else
                    text.setText(sBuilder.toString());
            }
        }
    }
  • 相关阅读:
    Test1
    排序之快速排序
    java注解
    排序之插入排序
    java IO之输出流——OutputStream
    java IO之输入流——InputStream
    行为模式之中介者
    行为模式之命令
    行为模式之职责链
    结构型模式总结
  • 原文地址:https://www.cnblogs.com/zhouxiaoyue/p/14171063.html
Copyright © 2011-2022 走看看