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());
        }
    }
}

 

posted @ 2020-12-22 01:49  zhou小月  阅读(185)  评论(0编辑  收藏  举报