import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class Jisuanqi
{
static Button A[][]=new Button[4][5];
static Frame fra=new Frame("计算器");
static Label lab=new Label("0.0",Label.RIGHT);
public static void main(String args[])
{
fra.setResizable(false);
Label my=new Label("作者:阿立");
my.setSize(260,24);
my.setLocation(3,194);
int i,j;
for(i=0;i<4;i++)
for(j=0;j<5;j++)
{
A[i][j]=new Button();
A[i][j].setSize(45,25);
A[i][j].setLocation(j*53,62+33*i);
}
for(i=0;i<3;i++)
for(j=0;j<3;j++)
{
String s = Integer.toString(j+1+i*3);
A[i][j].setLabel(s);
}
for(i=0;i<4;i++)
for(j=0;j<5;j++)
A[i][j].addActionListener(new MyActLister());
A[0][3].setLabel("C");
A[0][4].setLabel("CE");
A[1][3].setLabel("+");
A[1][4].setLabel("-");
A[2][3].setLabel("*");
A[2][4].setLabel("/");
A[3][0].setLabel("0");
A[3][1].setLabel(".");
A[3][2].setLabel("+-");
A[3][3].setLabel("1/x");
A[3][4].setLabel("=");
fra.setLayout(null);
fra.setSize(260,219);
lab.setSize(255,24);
lab.setLocation(3,30);
lab.setBackground(Color.cyan);
fra.add(lab);
fra.add(my);
for(i=0;i<4;i++)
for(j=0;j<5;j++)
fra.add(A[i][j]);
fra.addWindowListener(new WindowClose());
fra.setVisible(true);
}
static class MyActLister implements ActionListener{
private static boolean a=true;
private static String[] str=new String[2];
private static String[] str1=new String[2];
private static int t=0;
public void actionPerformed(ActionEvent e) {
Button but=(Button)e.getSource();
if(but==A[0][0])
Shuju("1");
else if(but==A[0][1])
Shuju("2");
else if(but==A[0][2])
Shuju("3");
else if(but==A[1][0])
Shuju("4");
else if(but==A[1][1])
Shuju("5");
else if(but==A[1][2])
Shuju("6");
else if(but==A[2][0])
Shuju("7");
else if(but==A[2][1])
Shuju("8");
else if(but==A[2][2])
Shuju("9");
else if(but==A[3][0])
{
if(a)
lab.setText("0");
else
lab.setText(lab.getText()+"0");
}
else if(but==A[0][3])
{
int b=lab.getText().length()-1;
lab.setText(lab.getText().substring(0,b));
}
else if(but==A[0][4])
{
lab.setText("0.0");
a=true;
t=0;
for(int p=0;p<2;p++)
{
str[p]=null;
str[p]=null;
}
}
else if(but==A[3][1])
{
boolean c=true;
if(lab.getText().charAt(0)=='0')
a=false;
for(int k=0;k<lab.getText().length();k++)
if(lab.getText().charAt(k)=='.')
c=false;
if(c)
lab.setText(lab.getText()+".");
}
else if(but==A[3][2])
{
double d;
d=-Double.parseDouble(lab.getText());
lab.setText(Double.toString(d));
}
else if(but==A[3][3])
{
double d;
d=1/Double.parseDouble(lab.getText());
lab.setText(Double.toString(d));
}
else if(but==A[1][3])
{
if(t==0)
{
str[0]=lab.getText();
lab.setText("0.0");
a=true;
str1[0]=("+");
t=1;
}
else if(t==1)
{
if(str1[0].equals("+"))
str[0]=Double.toString(Double.parseDouble(str[0])+Double.parseDouble(lab.getText()));
else if(str1[0].equals("-"))
str[0]=Double.toString(Double.parseDouble(str[0])-Double.parseDouble(lab.getText()));
else if(str1[0].equals("x"))
str[0]=Double.toString(Double.parseDouble(str[0])*Double.parseDouble(lab.getText()));
else
{
if(Double.parseDouble(lab.getText())==0.0)
JOptionPane.showMessageDialog(null,"除数不能为0!!!请按CE后重新输入!");
else
str[0]=Double.toString(Double.parseDouble(str[0])/Double.parseDouble(lab.getText()));
}
lab.setText("0.0");
a=true;
str1[0]=("+");
}
else if(t==2)
{
if(str1[1].equals("/"))
{
if(Double.parseDouble(lab.getText())==0.0)
JOptionPane.showMessageDialog(null,"除数不能为0!!!请按CE后重新输入!");
else
str[1]=Double.toString(Double.parseDouble(str[1])/Double.parseDouble(lab.getText()));
}
else
str[1]=Double.toString(Double.parseDouble(str[1])*Double.parseDouble(lab.getText()));
lab.setText("0.0");
a=true;
if(str1[0].equals("+"))
str[0]=Double.toString(Double.parseDouble(str[0])+Double.parseDouble(str[1]));
else if(str1[0].equals("-"))
str[0]=Double.toString(Double.parseDouble(str[0])-Double.parseDouble(str[1]));
else if(str1[0].equals("x"))
str[0]=Double.toString(Double.parseDouble(str[0])*Double.parseDouble(str[1]));
else
{
if(Double.parseDouble(str[1])==0.0)
JOptionPane.showMessageDialog(null,"除数不能为0!!!请按CE后重新输入!");
else
str[0]=Double.toString(Double.parseDouble(str[0])/Double.parseDouble(str[1]));
}
t=1;
str1[0]="+";
}
}
else if(but==A[1][4])
{
if(t==0)
{
str[0]=lab.getText();
lab.setText("0.0");
a=true;
str1[0]=("-");
t=1;
}
else if(t==1)
{
if(str1[0].equals("+"))
str[0]=Double.toString(Double.parseDouble(str[0])+Double.parseDouble(lab.getText()));
else if(str1[0].equals("-"))
str[0]=Double.toString(Double.parseDouble(str[0])-Double.parseDouble(lab.getText()));
else if(str1[0].equals("x"))
str[0]=Double.toString(Double.parseDouble(str[0])*Double.parseDouble(lab.getText()));
else
{
if(Double.parseDouble(lab.getText())==0.0)
JOptionPane.showMessageDialog(null,"除数不能为0!!!请按CE后重新输入!");
else
str[0]=Double.toString(Double.parseDouble(str[0])/Double.parseDouble(lab.getText()));
}
lab.setText("0.0");
a=true;
str1[0]=("-");
}
else if(t==2)
{
if(str1[1].equals("/"))
{
if(Double.parseDouble(lab.getText())==0.0)
JOptionPane.showMessageDialog(null,"除数不能为0!!!请按CE后重新输入!");
else
str[1]=Double.toString(Double.parseDouble(str[1])/Double.parseDouble(lab.getText()));
}
else
str[1]=Double.toString(Double.parseDouble(str[1])*Double.parseDouble(lab.getText()));
lab.setText("0.0");
a=true;
if(str1[0].equals("+"))
str[0]=Double.toString(Double.parseDouble(str[0])+Double.parseDouble(str[1]));
else if(str1[0].equals("-"))
str[0]=Double.toString(Double.parseDouble(str[0])-Double.parseDouble(str[1]));
else if(str1[0].equals("x"))
str[0]=Double.toString(Double.parseDouble(str[0])*Double.parseDouble(str[1]));
else
{
if(Double.parseDouble(str[1])==0.0)
JOptionPane.showMessageDialog(null,"除数不能为0!!!请按CE后重新输入!");
else
str[0]=Double.toString(Double.parseDouble(str[0])/Double.parseDouble(str[1]));
}
t=1;
str1[0]="-";
}
}
else if(but==A[2][3])
{
if(t==0)
{
str[0]=lab.getText();
lab.setText("0.0");
a=true;
str1[0]=("x");
t++;
}
else if(t==1)
{
str[1]=lab.getText();
lab.setText("0.0");
a=true;
str1[1]=("x");
t=2;
}
else if(t==2)
{
if(str1[1].equals("x"))
str[1]=Double.toString(Double.parseDouble(str[1])*Double.parseDouble(lab.getText()));
else
{
if(Double.parseDouble(lab.getText())==0.0)
JOptionPane.showMessageDialog(null,"除数不能为0!!!请按CE后重新输入!");
else
str[1]=Double.toString(Double.parseDouble(str[1])/Double.parseDouble(lab.getText()));
}
lab.setText("0.0");
a=true;
str1[1]=("x");
}
}
else if(but==A[2][4])
{
if(t==0)
{
str[0]=lab.getText();
lab.setText("0.0");
a=true;
str1[0]=("/");
t++;
}
else if(t==1)
{
str[1]=lab.getText();
lab.setText("0.0");
a=true;
str1[1]=("/");
t=2;
}
else if(t==2)
{
if(str1[1].equals("x"))
str[1]=Double.toString(Double.parseDouble(str[1])*Double.parseDouble(lab.getText()));
else
{
if(Double.parseDouble(lab.getText())==0.0)
JOptionPane.showMessageDialog(null,"除数不能为0!!!请按CE后重新输入!");
else
str[1]=Double.toString(Double.parseDouble(str[1])/Double.parseDouble(lab.getText()));
}
a=true;
lab.setText("0.0");
str1[1]=("/");
}
}
else
{
if(t==1)
{
if(str1[0].equals("+"))
str[0]=Double.toString(Double.parseDouble(str[0])+Double.parseDouble(lab.getText()));
else if(str1[0].equals("-"))
str[0]=Double.t