代码:
calculator.java
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
import javax.swing.border.*;
import java.text.NumberFormat;
public class calculator extends Frame implements ActionListener
{ NumberButton numberbutton[];
OperationButton operationbutton[];
Button button_point,button_equal,button_reset,button_sqrt;
Panel pane;
TextArea text_result;
String fuhao[]={"+","-","*","/"};
public calculator(String s)
{super(s);
numberbutton=new NumberButton[10];
for(int i=0;i<=9;i++)
{ numberbutton[i]=new NumberButton(i);
numberbutton[i].addActionListener(this);
}
operationbutton=new OperationButton[4];
for(int i=0;i<4;i++)
{operationbutton[i]=new OperationButton(fuhao[i]); //...
operationbutton[i].addActionListener(this);
}
button_point=new Button(".");
button_equal=new Button("=");
button_reset=new Button("C");
button_sqrt=new Button("sqrt");
text_result=new TextArea("",1,1,TextArea.SCROLLBARS_NONE);
//text_result.setEditable(false);
pane=new Panel();
pane.setLayout(new GridLayout(5,5));
pane.add(numberbutton[1]);
pane.add(numberbutton[2]);
pane.add(numberbutton[3]);
pane.add(operationbutton[0]);
pane.add(numberbutton[4]);
pane.add(numberbutton[5]);
pane.add(numberbutton[6]);
pane.add(operationbutton[1]);
pane.add(numberbutton[7]);
pane.add(numberbutton[8]);
pane.add(numberbutton[9]);
pane.add(operationbutton[2]);
pane.add(numberbutton[0]);
pane.add(button_point);
pane.add(button_sqrt);
pane.add(operationbutton[3]);
pane.add(button_equal);
pane.add(button_reset);
add(pane,BorderLayout.CENTER);
add(text_result,BorderLayout.NORTH);
button_equal.addActionListener(this);
button_reset.addActionListener(this);
button_point.addActionListener(this);
button_sqrt.addActionListener(this);
addWindowListener(new WindowAdapter()
{public void windowClosing(WindowEvent e)
{System.exit(0);}
});
setVisible(true);
setBounds(100,50,240,180);
setResizable(false);
validate();
}
public void actionPerformed(ActionEvent e)
{double a,b;String fh;
if(e.getSource()instanceof NumberButton)
{NumberButton bt=(NumberButton)e.getSource();
int aa=bt.getNumber();
text_result.append(""+aa);
}
if (e.getSource()== button_point)
{text_result.append(""+".");
}
if(e.getSource()== button_sqrt)
{String jg=text_result.getText();
a=Double.valueOf(jg).doubleValue();
double ss;ss=Math.sqrt(a);String sss = String.valueOf(ss);
text_result.setText(sss);
}
if(e.getSource()instanceof OperationButton )
{
OperationButton bt=(OperationButton)e.getSource();
fh=bt.getOperator();
String jg=text_result.getText();
a=Double.valueOf(jg).doubleValue();
text_result.setText("");
}
if(e.getSource()== button_equal)
{
String jg1=text_result.getText();
b=Double.valueOf(jg1).doubleValue();//System.out.println(""+a);System.out.println(""+fh);System.out.println("aa");
if(fh=="+"){double ss;ss=a+b;String sss = String.valueOf(ss); text_result.setText(sss);}
if(fh=="-"){double ss;ss=a-b;String sss = String.valueOf(ss); text_result.setText(sss);}
if(fh=="*"){double ss;ss=a*b;String sss = String.valueOf(ss); text_result.setText(sss);}
if(fh=="/"){double ss;ss=a/b;String sss = String.valueOf(ss); text_result.setText(sss);}
}
if(e.getSource()== button_reset)
{text_result.setText("");}
}
public static void main(String args[])
{new calculator("计算器");
}
}
NumberButton.javaimport java.awt.*;
import javax.swing.*;
import java.awt.event.*;
public class NumberButton extends Button
{int num;
public NumberButton(int num)
{super(" "+num);
this.num=num;
setForeground(Color.blue);
}
public int getNumber()
{return num;}
}
OperationButton.javaimport java.awt.*;
import javax.swing.*;
import java.awt.event.*;
public class OperationButton extends Button
{String p;
public OperationButton(String s)
{super(s);
p=s;
}
public String getOperator()
{return p;
}
}
是calculator.java中的a,b和fh的值传不过去!第94到99行!大家给我看看!
calculator.java
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
import javax.swing.border.*;
import java.text.NumberFormat;
public class calculator extends Frame implements ActionListener
{ NumberButton numberbutton[];
OperationButton operationbutton[];
Button button_point,button_equal,button_reset,button_sqrt;
Panel pane;
TextArea text_result;
String fuhao[]={"+","-","*","/"};
public calculator(String s)
{super(s);
numberbutton=new NumberButton[10];
for(int i=0;i<=9;i++)
{ numberbutton[i]=new NumberButton(i);
numberbutton[i].addActionListener(this);
}
operationbutton=new OperationButton[4];
for(int i=0;i<4;i++)
{operationbutton[i]=new OperationButton(fuhao[i]); //...
operationbutton[i].addActionListener(this);
}
button_point=new Button(".");
button_equal=new Button("=");
button_reset=new Button("C");
button_sqrt=new Button("sqrt");
text_result=new TextArea("",1,1,TextArea.SCROLLBARS_NONE);
//text_result.setEditable(false);
pane=new Panel();
pane.setLayout(new GridLayout(5,5));
pane.add(numberbutton[1]);
pane.add(numberbutton[2]);
pane.add(numberbutton[3]);
pane.add(operationbutton[0]);
pane.add(numberbutton[4]);
pane.add(numberbutton[5]);
pane.add(numberbutton[6]);
pane.add(operationbutton[1]);
pane.add(numberbutton[7]);
pane.add(numberbutton[8]);
pane.add(numberbutton[9]);
pane.add(operationbutton[2]);
pane.add(numberbutton[0]);
pane.add(button_point);
pane.add(button_sqrt);
pane.add(operationbutton[3]);
pane.add(button_equal);
pane.add(button_reset);
add(pane,BorderLayout.CENTER);
add(text_result,BorderLayout.NORTH);
button_equal.addActionListener(this);
button_reset.addActionListener(this);
button_point.addActionListener(this);
button_sqrt.addActionListener(this);
addWindowListener(new WindowAdapter()
{public void windowClosing(WindowEvent e)
{System.exit(0);}
});
setVisible(true);
setBounds(100,50,240,180);
setResizable(false);
validate();
}
public void actionPerformed(ActionEvent e)
{double a,b;String fh;
if(e.getSource()instanceof NumberButton)
{NumberButton bt=(NumberButton)e.getSource();
int aa=bt.getNumber();
text_result.append(""+aa);
}
if (e.getSource()== button_point)
{text_result.append(""+".");
}
if(e.getSource()== button_sqrt)
{String jg=text_result.getText();
a=Double.valueOf(jg).doubleValue();
double ss;ss=Math.sqrt(a);String sss = String.valueOf(ss);
text_result.setText(sss);
}
if(e.getSource()instanceof OperationButton )
{
OperationButton bt=(OperationButton)e.getSource();
fh=bt.getOperator();
String jg=text_result.getText();
a=Double.valueOf(jg).doubleValue();
text_result.setText("");
}
if(e.getSource()== button_equal)
{
String jg1=text_result.getText();
b=Double.valueOf(jg1).doubleValue();//System.out.println(""+a);System.out.println(""+fh);System.out.println("aa");
if(fh=="+"){double ss;ss=a+b;String sss = String.valueOf(ss); text_result.setText(sss);}
if(fh=="-"){double ss;ss=a-b;String sss = String.valueOf(ss); text_result.setText(sss);}
if(fh=="*"){double ss;ss=a*b;String sss = String.valueOf(ss); text_result.setText(sss);}
if(fh=="/"){double ss;ss=a/b;String sss = String.valueOf(ss); text_result.setText(sss);}
}
if(e.getSource()== button_reset)
{text_result.setText("");}
}
public static void main(String args[])
{new calculator("计算器");
}
}
NumberButton.javaimport java.awt.*;
import javax.swing.*;
import java.awt.event.*;
public class NumberButton extends Button
{int num;
public NumberButton(int num)
{super(" "+num);
this.num=num;
setForeground(Color.blue);
}
public int getNumber()
{return num;}
}
OperationButton.javaimport java.awt.*;
import javax.swing.*;
import java.awt.event.*;
public class OperationButton extends Button
{String p;
public OperationButton(String s)
{super(s);
p=s;
}
public String getOperator()
{return p;
}
}
是calculator.java中的a,b和fh的值传不过去!第94到99行!大家给我看看!
根据我理解原因如下:
在actionPerformed里面定义的时候每次点击按钮都会从新初始化a,b,fh的值,所以不能在actionPerformed里面定义