/*本程序是用AWT组件实现的*/
import Java.awt.*;
import java.awt.event.*;
import java.applet.Applet;
public class jsq extends Applet implements ActionListener
{
int flag=0;
double x;
String s=new String("");
Panel p1,p2,p3;
Label label;
TextField text1;
Button bclear,bpoint,beq,badd,bsbb,bmult,bdiv;
Button[] b=new Button[10];
public void init()
{
p1=new Panel();p2=new Panel();p3=new Panel();
setLayout(new FlowLayout());
p1.setLayout(new FlowLayout());
p2.setLayout(new GridLayout(4,3));
p3.setLayout(new GridLayout(4,1));
label=new Label("简易计算器");
text1=new TextField(12);
bclear=new Button("Clear");
add(label);
//把文本框和清空按钮加在第一个板上
p1.add(text1);p1.add(bclear);
bclear.addActionListener(this);
for(int i=0;i<10;i++)
{
b[i]=new Button(Integer.toString(i));
}
bpoint=new Button(".");
beq=new Button("=");
//把所有数字按钮和"."及"="加在第二个板上
for(int i=0;i<10;i++)
{
p2.add(b[i]);
b[i].addActionListener(this);
}
p2.add(bpoint);p2.add(beq);
bpoint.addActionListener(this);
beq.addActionListener(this);
//把运算符号按钮加在第三个板上
badd=new Button("+");
bsbb=new Button("-");
bmult=new Button("*");
bdiv=new Button("/");
p3.add(badd);
p3.add(bsbb);
p3.add(bmult);
p3.add(bdiv);
badd.addActionListener(this);
bsbb.addActionListener(this);
bmult.addActionListener(this);
bdiv.addActionListener(this);
add(p1);add(p2);add(p3);add(new Label(" "));
}
public void actionPerformed(ActionEvent e)
{
for(int i=0;i<10;i++){
if(e.getSource()==b[i]e.getSource()==bpoint){
s=s+e.getActionCommand();
text1.setText(s);
break;
}
}
//判定运算符号,并作上标记
if(e.getSource()==badd){
x=Double.parseDouble(s);
flag=1;
text1.setText("");
s="";
}
if(e.getSource()==bsbb){
x=Double.parseDouble(s);
flag=2;
text1.setText("");
s="";
}
if(e.getSource()==bmult){
x=Double.parseDouble(s);
flag=3;
text1.setText("");
s="";
}
if(e.getSource()==bdiv){
x=Double.parseDouble(s);
flag=4;
text1.setText("");
s="";
}
//清空并标志为0
if(e.getSource()==bclear){
text1.setText("");
s="";
flag=0;
}
//运算
if(e.getSource()==beq){
switch(flag){
case 1:
{
x=Double.parseDouble(s)+x;
String s=String.valueOf(x);
text1.setText(s);break;
}
case 2:
{
x=x-Double.parseDouble(s);
String s=String.valueOf(x);
text1.setText(s);break;
}
case 3:
{
x=Double.parseDouble(s)*x;
String s=String.valueOf(x);
text1.setText(s);break;
}
case 4:
{
if(Double.parseDouble(s)==0){text1.setText("除数不能为0!");break;}
x=x/Double.parseDouble(s);
String s=String.valueOf(x);
text1.setText(s);break;
}
}
}
}
}