代码:
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行!大家给我看看!