📄 ch7_e7_24.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 + -