java 计算器

package com.test;


import javax.swing.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.text.DecimalFormat;


import static javax.swing.SwingConstants.RIGHT;


/**
 * Created by Jason on 2018/5/24.
 */
public class Rock extends JFrame implements ActionListener
{
    private JButton jButton_Numbers[];
    private JButton jButton_Point;
    private JButton jButton_Plus;
    private JButton jButton_Minus;
    private JButton jButton_Multiply;
    private JButton jButton_Divide;
    private JButton jButton_Equal;
    private JPanel jPanel_Main;
    private JTextField jTextField;
    private String firstParament;
    private String secondParament;
    private String jTextFieldString;
    private String jTextFieldValue;
    private Object lastOperation;


    public Rock()
    {
        lastOperation= new Object();
        lastOperation=null;
        firstParament=new String("");
        secondParament=new String("");
        jTextFieldString=new String("");
        jTextFieldValue=new String("");
        jTextField=new JTextField(12);


        jButton_Numbers=new JButton[10];
        jButton_Plus=new JButton("+");
        jButton_Point=new JButton(".");
        jButton_Minus=new JButton("-");
        jButton_Multiply=new JButton("*");
        jButton_Divide=new JButton("/");
        jButton_Equal=new JButton("=");


        jPanel_Main=new JPanel();
        for (int i = 0;i<10;i++)
        {
            jButton_Numbers[i] = new JButton(""+i);
            jPanel_Main.add(jButton_Numbers[i]);
            jButton_Numbers[i].addActionListener(this);
        }
        jPanel_Main.add(jButton_Point);
        jPanel_Main.add(jButton_Plus);
        jPanel_Main.add(jButton_Minus);
        jPanel_Main.add(jButton_Multiply);
        jPanel_Main.add(jButton_Divide);
        jPanel_Main.add(jButton_Equal);
        jPanel_Main.add(jTextField);
        jTextField.setHorizontalAlignment(RIGHT);


        jButton_Point.addActionListener(this);
        jButton_Equal.addActionListener(this);
        jButton_Plus.addActionListener(this);
        jButton_Minus.addActionListener(this);
        jButton_Multiply.addActionListener(this);
        jButton_Divide.addActionListener(this);


        this.add(jPanel_Main);


        this.setSize(500,300);
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        this.setVisible(true);


    }


    private void setjTextField(String s)
    {
        jTextField.setText(s);
    }


    private String getjTextField()
    {
        return jTextField.getText();
    }


    private String getJButtonText(Object object)
    {
        return ((JButton)object).getText();
    }


    private void handleJButtonNumbers(Object object)
    {
        if(jButton_Equal == lastOperation)
        {
            firstParament="";
            secondParament="";
            jTextFieldString="";
        }
        jTextFieldValue = String.format("%s%s",jTextFieldString,getJButtonText(object));
    }


    @Override
    public void actionPerformed(ActionEvent e)
    {
        jTextFieldString=getjTextField();
        jTextFieldValue=new String("");
        Object object=e.getSource();
        for(int i=0;i<10;i++)
        {
            if(jButton_Numbers[i] == object)
            {
                handleJButtonNumbers(object);
            }
        }
        if(getJButtonText(object).equals("."))
        {
            handleJButtonNumbers(object);
        }


        if( getJButtonText(object).equals("+")
                || getJButtonText(object).equals("-")
                || getJButtonText(object).equals("*")
                || getJButtonText(object).equals("/") )
        {
            firstParament=getjTextField();
            jTextFieldValue = "";
            lastOperation=object;
        }


        if(getJButtonText(object).equals("="))
        {
            secondParament=jTextFieldString;
            float result=0.0f;


            firstParament = firstParament.equals("") ? "0" : firstParament;
            secondParament = secondParament.equals("") ? "0" : secondParament;


            switch (getJButtonText(lastOperation).charAt(0))
            {
                case '+':
                    result=parseFloat(firstParament)+parseFloat(secondParament);break;


                case '-':
                    result=parseFloat(firstParament)-parseFloat(secondParament);break;


                case '*':
                    result=parseFloat(firstParament)*parseFloat(secondParament);break;


                case '/':
                    result=parseFloat(firstParament)/parseFloat(secondParament);break;


                default:
                    System.out.println("default");
            }
            DecimalFormat df = new DecimalFormat("###.####");
            jTextFieldValue = String.format(("%s"),df.format(result));
            firstParament="";
            secondParament="";
            lastOperation=object;
        }
        setjTextField(jTextFieldValue);
    }


    private float parseFloat(String s)
    {
        return Float.parseFloat(s);
    }
}

猜你喜欢

转载自blog.csdn.net/r77683962/article/details/80452168