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());
            }
        }
    }
  • 相关阅读:
    171 01 Android 零基础入门 03 Java常用工具类02 Java包装类 01 包装类简介 01 Java包装类内容简介
    170 01 Android 零基础入门 03 Java常用工具类01 Java异常 08 Java异常总结 01 异常总结
    169 01 Android 零基础入门 03 Java常用工具类01 Java异常 07 异常链 01 异常链简介
    168 01 Android 零基础入门 03 Java常用工具类01 Java异常 06 自定义异常 01 自定义异常类
    167 01 Android 零基础入门 03 Java常用工具类01 Java异常 05 使用throw和throws实现异常处理 02 使用throw抛出异常对象
    166 01 Android 零基础入门 03 Java常用工具类01 Java异常 05 使用throw和throws实现异常处理 01 使用throws声明异常类型
    165 01 Android 零基础入门 03 Java常用工具类01 Java异常 04 使用try…catch…finally实现异常处理 05 return关键字在异常处理中的使用
    DevExpress WPF v20.2版本亮点放送:全新升级的PDF Viewer
    界面控件DevExpress使用教程:Dashboard – 自定义导出
    DevExpress WinForms帮助文档:表单控件
  • 原文地址:https://www.cnblogs.com/zhouxiaoyue/p/14171063.html
Copyright © 2011-2022 走看看