import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class Calc extends WindowAdapter implements ActionListener
{
boolean a1=true;
boolean a2=true;
boolean a3=true;
boolean f1=true;
boolean f2=true;
boolean f3=true;
boolean c1=true;
boolean c2=true;
boolean d1=true;
boolean d2=true;
boolean e1=true;
boolean g=true;
double suma=0;
double sumb=0;
double sumc=1;
double sumd=1;
Frame f;
JTextField tf;
Panel p;
Button b0=new Button("1");
Button b1=new Button("2");
Button b2=new Button("3");
Button b3=new Button("/");
Button b4=new Button("c");
Button b5=new Button("4");
Button b6=new Button("5");
Button b7=new Button("6");
Button b8=new Button("*");
Button b9=new Button("退格");
Button b10=new Button("7");
Button b11=new Button("8");
Button b12=new Button("9");
Button b13=new Button("-");
Button b14=new Button("1/r");
Button b15=new Button("0");
Button b16=new Button("+/-");
Button b17=new Button(".");
Button b18=new Button("+");
Button b19=new Button("=");
public void display()
{
f=new Frame("计算器");
f.setSize(200,200);
f.setLocation(200,140);
f.setBackground(Color.lightGray);
tf=new JTextField("0",5);
tf.setHorizontalAlignment(JTextField.RIGHT);
f.add(tf,"North");
p=new Panel();
p.setLayout(new GridLayout(4,5));
f.add(p);
p.add(b0);
p.add(b1);
p.add(b2);
p.add(b3);
p.add(b4);
p.add(b5);
p.add(b6);
p.add(b7);
p.add(b8);
p.add(b9);
p.add(b10);
p.add(b11);
p.add(b12);
p.add(b13);
p.add(b14);
p.add(b15);
p.add(b16);
p.add(b17);
p.add(b18);
p.add(b19);
b0.addActionListener(this);
b1.addActionListener(this);
b2.addActionListener(this);
b3.addActionListener(this);
b4.addActionListener(this);
b5.addActionListener(this);
b6.addActionListener(this);
b7.addActionListener(this);
b8.addActionListener(this);
b9.addActionListener(this);
b10.addActionListener(this);
b11.addActionListener(this);
b12.addActionListener(this);
b13.addActionListener(this);
b14.addActionListener(this);
b15.addActionListener(this);
b16.addActionListener(this);
b17.addActionListener(this);
b18.addActionListener(this);
b19.addActionListener(this);
f.addWindowListener(new WinClose());
f.setVisible(true);
}
public void actionPerformed(ActionEvent e)
{
if((e.getSource()!=b3)&&(e.getSource()!=b4)&&(e.getSource()!=b8)&&(e.getSource()!=b9)&&(e.getSource()!=b13)&&(e.getSource()!=b14)&&(e.getSource()!=b16)&&(e.getSource()!=b17)&&(e.getSource()!=b18)&&(e.getSource()!=b19))
{
if(a1&&f1&&c1&&d1)
{
if(((Double.parseDouble(tf.getText())==0)&&g!=false)||(e1==false))
{
tf.setText("");
tf.setText(tf.getText()+e.getActionCommand());e1=true;
}
else
tf.setText(tf.getText()+e.getActionCommand());
}
else
{
tf.setText("");
tf.setText(tf.getText()+e.getActionCommand());
a1=f1=c1=d1=true;
}
}
if((e.getSource()==b18))
{
if(!f2)
suma=sumb-Double.parseDouble(tf.getText());
if(!c2)
suma=sumc*Double.parseDouble(tf.getText());
if(!d2)
suma=(double)sumd/Double.parseDouble(tf.getText());
if(c2&&f2&&d2)
suma+=Double.parseDouble(tf.getText());
a1=false;a2=false;a3=false;
f1=true;f2=true;c1=true;c2=true;d1=true;d2=true;f3=true;e1=true;g=true;
}
if((e.getSource()==b13))
{
if(!a2)
sumb=suma+Double.parseDouble(tf.getText());
if(!c2)
sumb=sumc*Double.parseDouble(tf.getText());
if(!d2)
sumb=(double)sumd/Double.parseDouble(tf.getText());
if(!f2)
sumb-=Double.parseDouble(tf.getText());
if(a2&&c2&&d2&&f2)
sumb=Double.parseDouble(tf.getText())-sumb;
f1=false;f2=false;f3=false;
a1=true;a2=true;c1=true;c2=true;d1=true;d2=true;a3=true;e1=true;g=true;
}
if((e.getSource()==b8))
{
if(!d2)
sumc=(double)sumd/Double.parseDouble(tf.getText());
else
sumc*=Double.parseDouble(tf.getText());
c1=false;c2=false;
f1=true;f2=true;d1=true;d2=true;a1=true;a2=true;e1=true;g=true;
}
if((e.getSource()==b3))
{
if(!c2)
sumd=sumc*Double.parseDouble(tf.getText());
else
{
if(d2)
sumd=Double.parseDouble(tf.getText())/(double)sumd;
else
sumd=(double)sumd/Double.parseDouble(tf.getText());
}
d1=false;d2=false;
f1=true;f2=true;c1=true;c2=true;a1=true;a2=true;e1=true;g=true;
}
if((e.getSource()==b19))
{
if(!a2)
tf.setText(""+(suma+Double.parseDouble(tf.getText())));
if(!f2)
tf.setText(""+(sumb-Double.parseDouble(tf.getText())));
if(!c2)
{
if(!a3)
tf.setText(""+(sumc*Double.parseDouble(tf.getText())+suma));
if(!f3)
tf.setText(""+(sumb-(sumc*Double.parseDouble(tf.getText()))));
if(a3&&f3)
tf.setText(""+(sumc*Double.parseDouble(tf.getText())));
}
if(!d2)
{
if(!a3)
tf.setText(""+((double)sumd/Double.parseDouble(tf.getText())+suma));
if(!f3)
tf.setText(""+(sumb-((double)sumd/Double.parseDouble(tf.getText()))));
if(a3&&f3)
tf.setText(""+((double)sumd/Double.parseDouble(tf.getText())));
}
a1=true;
a2=true;
a3=true;
f1=true;
f2=true;
f3=true;
c1=true;
c2=true;
d1=true;
d2=true;
e1=false;
suma=0;
sumb=0;
sumc=1;
sumd=1;
g=true;
}
if((e.getSource()==b4))
{
tf.setText("0");
a1=true;
a2=true;
a3=true;
f1=true;
f2=true;
f3=true;
c1=true;
c2=true;
d1=true;
d2=true;
e1=true;
g=true;
suma=0;
sumb=0;
sumc=1;
sumd=1;
}
if((e.getSource()==b14))
{
tf.setText(""+((double)1/Double.parseDouble(tf.getText())));
}
if((e.getSource()==b9))
{
int l=(tf.getText()).length();
if(l==1)
{
tf.setText("");
tf.setText("0");
}
if(l>1)
tf.setText(tf.getText().substring(0,l-1));
}
if((e.getSource()==b16))
{
tf.setText(""+(-Double.parseDouble(tf.getText())));
}
if((e.getSource()==b17))
{
if(g)
tf.setText(tf.getText()+".");
g=false;
}
}
public static void main(String[] args)
{
(new Calc()).display();
}
}
class WinClose extends WindowAdapter
{
public void windowClosing(WindowEvent e)
{
System.exit(0);
}
}
我想知道有颜色部分的程序的含义,实在不理解,那位大哥不吝赐教下 谢谢
import java.awt.event.*;
import javax.swing.*;
public class Calc extends WindowAdapter implements ActionListener
{
boolean a1=true;
boolean a2=true;
boolean a3=true;
boolean f1=true;
boolean f2=true;
boolean f3=true;
boolean c1=true;
boolean c2=true;
boolean d1=true;
boolean d2=true;
boolean e1=true;
boolean g=true;
double suma=0;
double sumb=0;
double sumc=1;
double sumd=1;
Frame f;
JTextField tf;
Panel p;
Button b0=new Button("1");
Button b1=new Button("2");
Button b2=new Button("3");
Button b3=new Button("/");
Button b4=new Button("c");
Button b5=new Button("4");
Button b6=new Button("5");
Button b7=new Button("6");
Button b8=new Button("*");
Button b9=new Button("退格");
Button b10=new Button("7");
Button b11=new Button("8");
Button b12=new Button("9");
Button b13=new Button("-");
Button b14=new Button("1/r");
Button b15=new Button("0");
Button b16=new Button("+/-");
Button b17=new Button(".");
Button b18=new Button("+");
Button b19=new Button("=");
public void display()
{
f=new Frame("计算器");
f.setSize(200,200);
f.setLocation(200,140);
f.setBackground(Color.lightGray);
tf=new JTextField("0",5);
tf.setHorizontalAlignment(JTextField.RIGHT);
f.add(tf,"North");
p=new Panel();
p.setLayout(new GridLayout(4,5));
f.add(p);
p.add(b0);
p.add(b1);
p.add(b2);
p.add(b3);
p.add(b4);
p.add(b5);
p.add(b6);
p.add(b7);
p.add(b8);
p.add(b9);
p.add(b10);
p.add(b11);
p.add(b12);
p.add(b13);
p.add(b14);
p.add(b15);
p.add(b16);
p.add(b17);
p.add(b18);
p.add(b19);
b0.addActionListener(this);
b1.addActionListener(this);
b2.addActionListener(this);
b3.addActionListener(this);
b4.addActionListener(this);
b5.addActionListener(this);
b6.addActionListener(this);
b7.addActionListener(this);
b8.addActionListener(this);
b9.addActionListener(this);
b10.addActionListener(this);
b11.addActionListener(this);
b12.addActionListener(this);
b13.addActionListener(this);
b14.addActionListener(this);
b15.addActionListener(this);
b16.addActionListener(this);
b17.addActionListener(this);
b18.addActionListener(this);
b19.addActionListener(this);
f.addWindowListener(new WinClose());
f.setVisible(true);
}
public void actionPerformed(ActionEvent e)
{
if((e.getSource()!=b3)&&(e.getSource()!=b4)&&(e.getSource()!=b8)&&(e.getSource()!=b9)&&(e.getSource()!=b13)&&(e.getSource()!=b14)&&(e.getSource()!=b16)&&(e.getSource()!=b17)&&(e.getSource()!=b18)&&(e.getSource()!=b19))
{
if(a1&&f1&&c1&&d1)
{
if(((Double.parseDouble(tf.getText())==0)&&g!=false)||(e1==false))
{
tf.setText("");
tf.setText(tf.getText()+e.getActionCommand());e1=true;
}
else
tf.setText(tf.getText()+e.getActionCommand());
}
else
{
tf.setText("");
tf.setText(tf.getText()+e.getActionCommand());
a1=f1=c1=d1=true;
}
}
if((e.getSource()==b18))
{
if(!f2)
suma=sumb-Double.parseDouble(tf.getText());
if(!c2)
suma=sumc*Double.parseDouble(tf.getText());
if(!d2)
suma=(double)sumd/Double.parseDouble(tf.getText());
if(c2&&f2&&d2)
suma+=Double.parseDouble(tf.getText());
a1=false;a2=false;a3=false;
f1=true;f2=true;c1=true;c2=true;d1=true;d2=true;f3=true;e1=true;g=true;
}
if((e.getSource()==b13))
{
if(!a2)
sumb=suma+Double.parseDouble(tf.getText());
if(!c2)
sumb=sumc*Double.parseDouble(tf.getText());
if(!d2)
sumb=(double)sumd/Double.parseDouble(tf.getText());
if(!f2)
sumb-=Double.parseDouble(tf.getText());
if(a2&&c2&&d2&&f2)
sumb=Double.parseDouble(tf.getText())-sumb;
f1=false;f2=false;f3=false;
a1=true;a2=true;c1=true;c2=true;d1=true;d2=true;a3=true;e1=true;g=true;
}
if((e.getSource()==b8))
{
if(!d2)
sumc=(double)sumd/Double.parseDouble(tf.getText());
else
sumc*=Double.parseDouble(tf.getText());
c1=false;c2=false;
f1=true;f2=true;d1=true;d2=true;a1=true;a2=true;e1=true;g=true;
}
if((e.getSource()==b3))
{
if(!c2)
sumd=sumc*Double.parseDouble(tf.getText());
else
{
if(d2)
sumd=Double.parseDouble(tf.getText())/(double)sumd;
else
sumd=(double)sumd/Double.parseDouble(tf.getText());
}
d1=false;d2=false;
f1=true;f2=true;c1=true;c2=true;a1=true;a2=true;e1=true;g=true;
}
if((e.getSource()==b19))
{
if(!a2)
tf.setText(""+(suma+Double.parseDouble(tf.getText())));
if(!f2)
tf.setText(""+(sumb-Double.parseDouble(tf.getText())));
if(!c2)
{
if(!a3)
tf.setText(""+(sumc*Double.parseDouble(tf.getText())+suma));
if(!f3)
tf.setText(""+(sumb-(sumc*Double.parseDouble(tf.getText()))));
if(a3&&f3)
tf.setText(""+(sumc*Double.parseDouble(tf.getText())));
}
if(!d2)
{
if(!a3)
tf.setText(""+((double)sumd/Double.parseDouble(tf.getText())+suma));
if(!f3)
tf.setText(""+(sumb-((double)sumd/Double.parseDouble(tf.getText()))));
if(a3&&f3)
tf.setText(""+((double)sumd/Double.parseDouble(tf.getText())));
}
a1=true;
a2=true;
a3=true;
f1=true;
f2=true;
f3=true;
c1=true;
c2=true;
d1=true;
d2=true;
e1=false;
suma=0;
sumb=0;
sumc=1;
sumd=1;
g=true;
}
if((e.getSource()==b4))
{
tf.setText("0");
a1=true;
a2=true;
a3=true;
f1=true;
f2=true;
f3=true;
c1=true;
c2=true;
d1=true;
d2=true;
e1=true;
g=true;
suma=0;
sumb=0;
sumc=1;
sumd=1;
}
if((e.getSource()==b14))
{
tf.setText(""+((double)1/Double.parseDouble(tf.getText())));
}
if((e.getSource()==b9))
{
int l=(tf.getText()).length();
if(l==1)
{
tf.setText("");
tf.setText("0");
}
if(l>1)
tf.setText(tf.getText().substring(0,l-1));
}
if((e.getSource()==b16))
{
tf.setText(""+(-Double.parseDouble(tf.getText())));
}
if((e.getSource()==b17))
{
if(g)
tf.setText(tf.getText()+".");
g=false;
}
}
public static void main(String[] args)
{
(new Calc()).display();
}
}
class WinClose extends WindowAdapter
{
public void windowClosing(WindowEvent e)
{
System.exit(0);
}
}
我想知道有颜色部分的程序的含义,实在不理解,那位大哥不吝赐教下 谢谢
{
if(!f2)
suma=sumb-Double.parseDouble(tf.getText());
if(!c2)
suma=sumc*Double.parseDouble(tf.getText());
if(!d2)
suma=(double)sumd/Double.parseDouble(tf.getText());
if(c2&&f2&&d2)
suma+=Double.parseDouble(tf.getText());
a1=false;a2=false;a3=false;
f1=true;f2=true;c1=true;c2=true;d1=true;d2=true;f3=true;e1=true;g=true;
}
其实我只是想知道IF(!F2), if(!c2),if(!d2),if(c2&&f2&&d2)这些语句的作用
if((e.getSource()==b18)) //获取事件源
{
if(!f2) //-号
suma=sumb-Double.parseDouble(tf.getText());
if(!c2) //*号
suma=sumc*Double.parseDouble(tf.getText());
if(!d2) //除号
suma=(double)sumd/Double.parseDouble(tf.getText());
if(c2&&f2&&d2)
suma+=Double.parseDouble(tf.getText());
a1=false;a2=false;a3=false;
f1=true;f2=true;c1=true;c2=true;d1=true;d2=true;f3=true;e1=true;g=true; //复位
}