⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ch7_e7_24.java

📁 各种关于JAVA的初级编程
💻 JAVA
字号:
import java.applet.*;
import java.awt.*;
import java.awt.event.*; 

public class ch7_e7_24 extends Applet implements ActionListener
{
    double firstOperant,secondOperant;
    int caculateStatus=0;//0:接收操作数一;1,2:接收操作数二;3:等号后
    char operator;
    
    Button caculateBtn[] = new Button[16];
    String btnLabel[] = {"1","2","3","+","4","5","6","-",
                         "7","8","9","*","0","C","=","/"};
    TextField inOutTfd = new TextField(50);
    Panel btnPanel = new Panel();
    
    public void init()
    {
        btnPanel.setLayout(new GridLayout(4,4));
        for(int i=0; i<16; i++)
        {
            caculateBtn[i] = new Button(btnLabel[i]);
            caculateBtn[i].addActionListener(this);
            btnPanel.add(caculateBtn[i]);
        }

        setLayout(new BorderLayout());
        add("North", inOutTfd);        
        add("Center", btnPanel);
        inOutTfd.setText("0");
        caculateStatus = 0;
    }
    
    public void actionPerformed(ActionEvent ae)
    {
        if(ae.getSource() instanceof Button)
        {
            char ch = ((Button)(ae.getSource())).getLabel().charAt(0);
            //System.out.println(ch + ", status: " + caculateStatus);
            
            switch(ch)
            {
                case 'C' :
                    inOutTfd.setText("0");
                    firstOperant = secondOperant = 0;
                    caculateStatus = 0;
                    break;
                case '=' :
                    if(caculateStatus == 0)
                    {
                        caculateStatus = 3;
                    }
                    else if(caculateStatus == 2)
                    {
                        oneStepCaculate();
                        //System.out.println(firstOperant + "," + secondOperant);
                        caculateStatus = 3;
                    }
                    break;
                case '+' :
                case '-' :
                case '*' :
                case '/' :
                    if(caculateStatus == 0 || caculateStatus == 3)
                    {
                        secondOperant = 0;
                        caculateStatus = 1;
                    }
                    else if(caculateStatus == 1)
                    {
                        operator = ch;
                    }
                    else if(caculateStatus == 2)
                    {
                        oneStepCaculate();
                        secondOperant = 0;
                        caculateStatus = 1;
                    }
                    operator = ch;
                    break;
                default : //数字键
                    if(caculateStatus == 0)
                    {
                        int temp = (int)firstOperant;
                        temp = temp*10 + ch - '0';
                        inOutTfd.setText(Integer.toString(temp));
                        firstOperant = temp;
                    }
                    else if(caculateStatus == 1)
                    {
                        secondOperant = ch - '0';
                        inOutTfd.setText(Integer.toString((int)secondOperant));
                        caculateStatus = 2;
                    }
                    else if(caculateStatus == 2)
                    {
                        int temp = (int)secondOperant;
                        temp = temp*10 + ch - '0';
                        inOutTfd.setText(Integer.toString(temp));
                        secondOperant = temp;
                    }
                    else if(caculateStatus == 3)
                    {
                        firstOperant = ch - '0';
                        inOutTfd.setText(Integer.toString((int)firstOperant));
                        secondOperant = 0;
                        caculateStatus = 0;
                    }
            }//switch
        }
    }
    
    public void oneStepCaculate()
    {
        switch(operator)
        {
            case '+' : 
                firstOperant += secondOperant;
                break;
            case '-' :
                firstOperant -= secondOperant;
                break;
            case '*':
                firstOperant *= secondOperant;
                break;
            case '/':
                firstOperant /= secondOperant;
                break;
        }
        inOutTfd.setText(Double.toString(firstOperant));
    }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -