问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

编写java application程序实现一个简易计算器2

发布网友 发布时间:2023-10-16 04:01

我来回答

1个回答

热心网友 时间:2024-11-30 06:13

Java计算器 源代码:

import java.awt.*;

import java.awt.event.*;

import javax.swing.*;

/**********************Java计算器 主类*********************/

public class SunnyCalculator implements ActionListener {

    JFrame f;

    JMenu mEdit;

    JMenu mView;

    JMenu mHelp;

    JMenuItem mCopy;

    JMenuItem mPaste;

    JTextField tResult;

    JButton bNumber;

    JButton bOperator;

    JButton bOther;

    JButton bM;

    boolean isDouble=false;//是否为实数

    int opFlag=-1;

    static double t1=0,t2=0,t3=0,result=0;

    static int opflag1=-1,opflag2=-1,flag=0,resflag=1;

    int preOp,currentOp=0;//标准位

    double op1=0,op2=0;//操作数

    double n3;

    StringBuffer buf=new StringBuffer(20);

    StringBuffer copyBoard=new StringBuffer(20);//剪贴板

    StringBuffer memory=new StringBuffer(20);//M系列

    StringBuffer str=new StringBuffer();

    //Java计算器 构造器

    public SunnyCalculator()

    {

        f = new JFrame("Sunny计算器_杨梅树的盔甲");

        Container contentPane = f.getContentPane();

        /**************************Java计算器 菜单的创建*****************************/

        JMenuBar mBar = new JMenuBar();

        mBar.setOpaque(true);

        mEdit = new JMenu("编辑(E)");

        mEdit.setMnemonic(KeyEvent.VK_E);

        mCopy = new JMenuItem("复制(C)");

        mEdit.add(mCopy);

        mPaste = new JMenuItem("粘贴(P)");

        mEdit.add(mPaste);

        mView = new JMenu("查看(V)");

        mView.setMnemonic(KeyEvent.VK_V);

        mView.add(new JMenuItem("标准型"));

        mView.add(new JMenuItem("科学型"));

        mView.addSeparator();

        mView.add(new JMenuItem("查看分组"));

        mHelp = new JMenu("帮助(H)");

        mHelp.setMnemonic(KeyEvent.VK_H);

        mHelp.add(new JMenuItem("帮助主题"));

        mHelp.addSeparator();

        mHelp.add(new JMenuItem("关于计算器"));

        mBar.add(mEdit);

        mBar.add(mView);

        mBar.add(mHelp);

        f.setJMenuBar(mBar);

        contentPane.setLayout(new BorderLayout());

        JPanel pTop = new JPanel();

        tResult = new JTextField("0.",26);

        tResult.setHorizontalAlignment(JTextField.RIGHT);

        tResult.setEditable(false);

        pTop.add(tResult);

        contentPane.add(pTop,BorderLayout.NORTH);

        JPanel pBottom = new JPanel();

        pBottom.setLayout(new BorderLayout());

        JPanel pLeft = new JPanel();

        pLeft.setLayout(new GridLayout(5,1,3,3));

        bM = new JButton(" ");

        bM.setEnabled(false);

        pLeft.add(bM);

        /*************************Java计算器 功能键定义***************************/

        bOther = new JButton("MC");

        bOther.addActionListener(this);

        bOther.setForeground(Color.red);

        bOther.setMargin(new Insets(3,2,3,2));

        pLeft.add(bOther);

        bOther = new JButton("MR");

        bOther.addActionListener(this);

        bOther.setForeground(Color.red);

        bOther.setMargin(new Insets(3,2,3,2));

        pLeft.add(bOther);

        bOther = new JButton("MS");

        bOther.addActionListener(this);

        bOther.setForeground(Color.red);

        bOther.setMargin(new Insets(3,2,3,2));

        pLeft.add(bOther);

        bOther = new JButton("M+");

        bOther.addActionListener(this);

        bOther.setForeground(Color.red);

        bOther.setMargin(new Insets(3,2,3,2));

        pLeft.add(bOther);

        pBottom.add(pLeft,BorderLayout.WEST);

        JPanel pRight = new JPanel();

        pRight.setLayout(new BorderLayout());

        JPanel pUp = new JPanel();

        pUp.setLayout(new GridLayout(1,3,3,0));

        bOther = new JButton("BackSpace");

        bOther.addActionListener(this);

        bOther.setForeground(Color.red);

        bOther.setMargin(new Insets(3,0,3,5));

        pUp.add(bOther);

        bOther = new JButton("CE");

        bOther.addActionListener(this);

        bOther.setForeground(Color.red);

        pUp.add(bOther);

        bOther = new JButton("C");

        bOther.addActionListener(this);

        bOther.setForeground(Color.red);

        pUp.add(bOther);

        /***************************Java计算器 数字键盘区定义**************************/

        JPanel pDown = new JPanel();

        pDown.setLayout(new GridLayout(4,5,3,2));

        bNumber = new JButton("7");

        bNumber.setForeground(Color.blue);

        bNumber.addActionListener(this);

        bNumber.setMargin(new Insets(3,3,3,3));

        pDown.add(bNumber);

        bNumber = new JButton("8");

        bNumber.setForeground(Color.blue);

        bNumber.addActionListener(this);

        bNumber.setMargin(new Insets(3,3,3,3));

        pDown.add(bNumber);

        bNumber = new JButton("9");

        bNumber.setForeground(Color.blue);

        bNumber.addActionListener(this);

        bNumber.setMargin(new Insets(3,3,3,3));

        pDown.add(bNumber);

        bOperator = new JButton("/");

        bOperator.setForeground(Color.red);

        bOperator.addActionListener(this);

        bOperator.setMargin(new Insets(3,0,3,0));

        pDown.add(bOperator);

        bOperator = new JButton("sqrt");

        bOperator.addActionListener(this);

        bOperator.setForeground(Color.red);

        bOperator.setMargin(new Insets(3,0,3,0));

        pDown.add(bOperator);

        bNumber = new JButton("4");

        bNumber.setForeground(Color.blue);

        bNumber.addActionListener(this);

        bNumber.setMargin(new Insets(3,3,3,3));

        bNumber.setHorizontalTextPosition(JButton.LEFT);

        pDown.add(bNumber);

        bNumber = new JButton("5");

        bNumber.setForeground(Color.blue);

        bNumber.addActionListener(this);

        bNumber.setMargin(new Insets(3,3,3,3));

        pDown.add(bNumber);

        bNumber = new JButton("6");

        bNumber.setForeground(Color.blue);

        bNumber.addActionListener(this);

        bNumber.setMargin(new Insets(3,3,3,3));

        pDown.add(bNumber);

        bOperator = new JButton("*");

        bOperator.setForeground(Color.red);

        bOperator.addActionListener(this);

        bOperator.setMargin(new Insets(3,3,3,3));

        pDown.add(bOperator);

        bOperator = new JButton("%");

        bOperator.setForeground(Color.blue);

        bOperator.addActionListener(this);

        bOperator.setMargin(new Insets(3,3,3,3));

        pDown.add(bOperator);

        bNumber = new JButton("1");

        bNumber.setForeground(Color.blue);

        bNumber.addActionListener(this);

        bNumber.setMargin(new Insets(3,3,3,3));

        pDown.add(bNumber);

        bNumber = new JButton("2");

        bNumber.setForeground(Color.blue);

        bNumber.addActionListener(this);

        bNumber.setMargin(new Insets(3,3,3,3));

        pDown.add(bNumber);

        bNumber = new JButton("3");

        bNumber.setForeground(Color.blue);

        bNumber.addActionListener(this);

        bNumber.setMargin(new Insets(3,3,3,3));

        pDown.add(bNumber);

        bOperator = new JButton("-");

        bOperator.setForeground(Color.red);

        bOperator.addActionListener(this);

        bOperator.setMargin(new Insets(3,3,3,3));

        pDown.add(bOperator);

        bOperator = new JButton("1/x");

        bOperator.setForeground(Color.blue);

        bOperator.addActionListener(this);

        pDown.add(bOperator);

        bNumber = new JButton("0");

        bNumber.setForeground(Color.blue);

        bNumber.addActionListener(this);

        bNumber.setMargin(new Insets(3,3,3,3));

        pDown.add(bNumber);

        bOperator = new JButton("+/-");

        bOperator.setForeground(Color.blue);

        bOperator.addActionListener(this);

        bOperator.setMargin(new Insets(3,3,3,3));

        pDown.add(bOperator);

        bOperator = new JButton(".");

        bOperator.setForeground(Color.blue);

        bOperator.addActionListener(this);

        bOperator.setMargin(new Insets(3,3,3,3));

        pDown.add(bOperator);

        bOperator = new JButton("+");

        bOperator.setForeground(Color.blue);

        bOperator.addActionListener(this);

        bOperator.setMargin(new Insets(3,3,3,3));

        pDown.add(bOperator);

        bOperator = new JButton("=");

        bOperator.setForeground(Color.blue);

        bOperator.addActionListener(this);

        bOperator.setMargin(new Insets(3,3,3,3));

        pDown.add(bOperator);

        pRight.add(pUp,BorderLayout.NORTH);

        pRight.add(pDown,BorderLayout.SOUTH);

        pBottom.add(pRight,BorderLayout.EAST);

        contentPane.add(pBottom,BorderLayout.SOUTH);

        f.setSize(new Dimension(320,256));

        f.setResizable(false);

        f.setVisible(true);

        f.addWindowListener(new WindowAdapter()

        {

            public void windowClosing(WindowEvent e)

            {

                System.exit(0);

            }

        }

        );

    }

    /************************Java计算器 计算方法区***************************/

    public void actionPerformed(ActionEvent e)

    {

        String s = e.getActionCommand();

        if(s.equals("复制(C)"))

        {

            String temp = tResult.getText().trim();

            copyBoard.replace(0, copyBoard.length(), temp);

            mPaste.setEnabled(true);

        }

        else if(s.equals("粘贴(p)"))

        {

            tResult.setText(copyBoard.toString()); 

        }

        else if(s.equals("CE"))

        {

            //如果是CE则清除文本框

            tResult.setText("0.");

        }

        else if(s.equals("BackSpace"))

        {

            if(!tResult.getText().trim().equals("0."))

            {

                //如果文本框中有内容

                if(str.length()!=1 && str.length()!=0)

                {

                    tResult.setText(str.delete(str.length()-1,str.length()).toString());

                }

                else

                {

                    tResult.setText("0.");

                    str.setLength(0);

                }

            }

            op2 = Double.parseDouble(tResult.getText().trim());

        }

        else if(s.equals("C"))

        {

            //如果是C删除当前计算

            tResult.setText("0.");

            op1 = op2 = 0;

            str.replace(0, str.length(), " ");

            preOp = currentOp = 0;

        }

        else if(s.equals("MC"))

        {

            //如果是MC则清除缓冲区

            String temp = "";

            memory.replace(0, memory.length(), temp);

            bM.setText(" ");

        }

        else if(s.equals("MR"))

        {

            //如果按键为MR则恢复缓冲区的数到文本框

            tResult.setText(memory.toString());

        }

        else if(s.equals("MS"))

        {

            //如果按键为MS则将文本框的数存入缓冲区

            String s1 = tResult.getText().trim();

            memory.replace(0, memory.length(), s1);

            bM.setText("M");

        }

        else if(s.equals("M+"))

        {

            //如果按键为MS则将文本框值与缓冲区的数相加但不显示结果

            String temp1 = tResult.getText().trim();

            double dtemp = Double.parseDouble(temp1);

            String temp2 = memory.toString();

            dtemp += Double.parseDouble(temp2);

            temp1 = String.valueOf(dtemp);

            memory.replace(0, memory.length(), temp1);

        }

        else if(s.equals("1/x"))

        {

            //如果按键为1/x则将文本框中的数据为它的倒数

            String temp = tResult.getText().trim();

            double dtemp = Double.parseDouble(temp);

            tResult.setText(""+1/dtemp);

        }

        else if(s.equals("sqrt"))

        {

            //如果按键为sqrt则将文本框中的内容求平方根

            String temp = tResult.getText().trim();

            double dtemp = Double.parseDouble(temp);

            tResult.setText(""+Math.sqrt(dtemp));

        }

        else if(s.equals("+"))

        {

            str.setLength(0);

            if(currentOp==0)

            {

                preOp = currentOp = 1;

                op2 = 0;

                tResult.setText(""+op1);

            }

            else

            {

                currentOp = preOp;

                preOp = 1;

                switch(currentOp){

                case 1:

                    op1 += op2;

                    tResult.setText(""+op1);

                    break;

                case 2:

                    op1 -= op2;

                    tResult.setText(""+op1);

                    break;

                case 3:

                    op1 *= op2;

                    tResult.setText(""+op1);

                    break;

                case 4:

                    op1 /= op2;

                    tResult.setText(""+op1);

                    break;

                }

            }

        }

        else if(s.equals("-")){ 

            str.setLength(0); 

            if(currentOp==0) 

            { 

                preOp=currentOp=2;//op1=op2;op2=0; 

                tResult.setText(""+op1); 

            } 

            else 

            { 

                currentOp =preOp; 

                preOp =2; 

                switch(currentOp){ 

case 1:op1=op1+op2;tResult.setText(""+op1);break; 

case 2:op1=op1-op2;tResult.setText(""+op1);break; 

case 3:op1=op1*op2;tResult.setText(""+op1);break; 

case 4:op1=op1/op2;tResult.setText(""+op1);break; 

                } 

            } 

        } 

        else if(s.equals("*"))//* 

        { 

            str.setLength(0); 

            if(currentOp==0) 

            { 

                preOp=currentOp=3;//op1=op2;op2=1; 

                tResult.setText(""+op1);//op1=op2; 

            } 

            else 

            { 

                currentOp =preOp; 

                preOp =3; 

                switch(currentOp){ 

case 1:op1=op1+op2;tResult.setText(""+op1);break; 

case 2:op1=op1-op2;tResult.setText(""+op1);break; 

case 3:op1=op1*op2;tResult.setText(""+op1);break; 

case 4:op1=op1/op2;tResult.setText(""+op1);break; 

                } 

            } 

        } 

        else if(s.equals("/"))// / 

        { 

            str.setLength(0); 

            if(currentOp==0) 

            { 

                preOp=currentOp=4;//op2=1; 

                tResult.setText(""+op1);//op1=op2; 

            } 

            else 

            { 

                currentOp =preOp; 

                preOp =4; 

                switch(currentOp){ 

case 1:op1=op1+op2;tResult.setText(""+op1);break; 

case 2:op1=op1-op2;tResult.setText(""+op1);break; 

case 3:op1=op1*op2;tResult.setText(""+op1);break; 

case 4:op1=op1/op2;tResult.setText(""+op1);break; 

                } 

            } 

        } 

        else if(s.equals("="))// = 

        { 

            if(currentOp==0) 

            { 

                str.setLength(0); 

                tResult.setText(""+op2); 

            } 

            else 

            { 

                str.setLength(0); 

                currentOp =preOp; 

                switch(currentOp){ 

case 1:op1=op1+op2;tResult.setText(""+op1);break; 

case 2:op1=op1-op2;tResult.setText(""+op1);break; 

case 3:op1=op1*op2;tResult.setText("&qu

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
青海摇什么时候火的 宋庄镇都有哪些村 唐山多地解除封控管理、静态管理,市民仍需做好哪些防护? 拼多多上面的旗舰店是正品吗 ...尺是20:1的图纸上,应画多少厘米,在比例尺是1:200的图纸上测_百度知... 4x2=8,4x20=8,4x200=800,我发现了:一个因数不变,另外一个因数乘以几,积... 小学三年级数学上册4X2=8,4X20=80,4X200=800我发现:一个因数不变,另... 描写雪的段落优选好句60句 程序员最低学历是多少 电脑不识别独显了怎么办? 同仁堂八珍糕价格多少,最正宗的八珍糕做法10 与任贤齐一起拍《伤心太平洋》MV的是谁3 可以玩地下城与勇士吗 曹颖在《醉拳II》中饰演什么49 羽西眼霜适合年龄 大连海事大学和上海海事大学哪个更好?377 八珍糕一定要用糯米粉和大米粉吗?8 八珍糕一定要用糯米粉和大米粉吗?8 任贤齐的伤心太平洋mv是什么电影谁看过19 八珍糕是用来做什么的?3 西塘钟介福的八珍糕这个需要常温保存吗?就是不放冰箱可以吗? 世界十大宝藏是哪些?2 听说喉咙有异物感是食道癌的症状,但医生说不是,食道癌症状有哪...4 患者老咽炎,最近总是觉得咽喉部有异物感,是不是食道癌啊?食道...3 常常感觉喉咙有异物感,饭后有胀气,是食道癌的前兆吗?8 喉咙不舒服,甚至有异物感,是食道癌吗?1 使用JAVA语言编写一个简易的计算器。功能可以参考Windo...4 、使用JAVA语言编写一个简易的计算器76 韩剧《我的女孩》里所有的歌曲226 求JAVA编写的类似windows带的简易计算器的源程序!7 考驾驶证从交钱到拿证要多久 耳朵发烫怎么回事.两个耳朵都发烫4 皮和羊毛织在一起的衣服怎么洗 交了工本费是不是可以直接出驾照了 数字大小写使用规则58 阿拉伯数字的大写,例如: 1 2 3 4 5 6 7 8 9...209 阿拉伯数字大小写8 世界十大宝藏是哪些?19 中国十大宝藏都是哪些宝藏?77 已经被人恶意被人注销了怎么办 大理到丽江坐火车要核酸吗 求这对情头😭无水印的谢谢啦! ...一下六一节目支持串词,谢谢大家,我自己语言组织力不行。_百度知... 醉拳2里有那些反派明星?6 我们现在生活中有阴阳人么1 人妖就是双性人(阴阳人)吗?中国有人妖吗?5 咽喉异物感到底是不是食道癌早期症状53 丝织衣服怎样洗涤防邹 警报器400瓦的接三个喇叭行不行? 请问阿拉伯数字12345...等等,ⅡⅢ IV V 这种形式...189