我做的一个简单的计算器,但是不能连续运算,大家帮帮忙,作业....
import java.awt.*;
import java.awt.event.*; 
public class  liucc implements ActionListener
{
   Button bPoint,bEqual,bPlus,bMinus,bClear,bMulti,bDivision; 
Button[] b=new Button[10];
   boolean isFloat = false;
   Panel panel1=new Panel(); 
Panel panel2=new Panel();
Panel panel3=new Panel();
    String currentOp = new String("");
    String preOp = new String("");
    String foreText = new String("");
    String backText = new String("");
    TextField tfAnswer=new TextField(8);
    Frame jsq=new Frame("计算器--刘曦茜");     
public void jsqjm (){
jsq.setSize(300,200);
jsq.setLocation(400,100);
jsq.setBackground(Color.PINK);
jsq.addWindowListener(new mc());
for(int i=9;i>=0;i--){ 
b[i]=new Button(Integer.toString(i)); 
panel2.add(b[i]);
b[i].addActionListener(this);
}        
    bPoint = new Button(".");
    bEqual=new Button("=");
    bEqual.setForeground(Color.red); 
    bClear = new Button("清除");
    bClear.setForeground(Color.red);
    bDivision = new Button("/");
    bDivision.setForeground(Color.red);
    bMulti = new Button("*");
    bMulti.setForeground(Color.red);
    bMinus = new Button("-");
    bMinus.setForeground(Color.red);    
    bPlus = new Button("+");
    bPlus.setForeground(Color.red);
jsq.setLayout(new FlowLayout(FlowLayout.CENTER,5,35));
panel1.setLayout(new FlowLayout());
panel2.setLayout(new GridLayout(4,3));
panel3.setLayout(new GridLayout(4,1));
jsq.add(panel1);
jsq.add(panel2);
jsq.add(panel3);
    panel1.add(tfAnswer); 
panel1.add(bClear);
bClear.addActionListener(this);
panel2.add(bPoint);
bPoint.addActionListener(this);
panel2.add(bEqual);
bEqual.addActionListener(this);
panel3.add(bPlus);
bPlus.addActionListener(this);
panel3.add(bMinus);
bMinus.addActionListener(this);
panel3.add(bMulti);
bMulti.addActionListener(this);
panel3.add(bDivision);
bDivision.addActionListener(this);
jsq.setVisible(true);
} public static void main (String[] args) 
{
liucc ftest=new liucc();
ftest.jsqjm();
}   public void actionPerformed(ActionEvent e) 
{
     String s=new String("");
     s=(String)e.getActionCommand();
if((s!=".")&&(s!="清除")&&(s!="+")&&(s!="-")&&(s!="/")&&(s!="*")&&(s!="="))
{ doForeText(s);    }
    if(s==".")
    {
     if(foreText.equals(""))
     {
     isFloat=true;
     foreText+="0.";       
     tfAnswer.setText(foreText);
     }
     else
     {
             if(!isFloat)
         doForeText(s);
     }                  
     }       
    
     if(s=="清除")
      {  doClear(); }
       if((s=="+")||(s=="-")||(s=="/")||(s=="*")) 
       {
         if(foreText!=" "){
          currentOp=s;
            doOperator(); 
         }
         else {  preOp=s; }
       }
       if(s.equals("="))
       {  doOperator(); } }
   public void doOperator(){
     double dFore=0,dBack=0,resultNum=0;
     Double d;
     if(preOp.equals(""))
     {
       backText=foreText;
       foreText="";
           tfAnswer.setText(backText); 
        }
     else 
     {
       dFore=(new Double(foreText)).doubleValue();
dFore=getNumberFromText();
       dBack=(new Double(backText)).doubleValue();
       foreText="";
       backText=tfAnswer.getText(); 
       if (preOp.equals("+")) {
          resultNum = dFore + dBack;    
   d=new Double(resultNum);
            tfAnswer.setText(d.toString());
            backText=d.toString();
       }
     else if(preOp.equals("-")) {
   resultNum = dBack - dFore ;
            d=new Double(resultNum);
            tfAnswer.setText(d.toString());
            backText=d.toString();
}
        else if(preOp.equals("*")) {
   resultNum = dBack * dFore ;
            d=new Double(resultNum);
            tfAnswer.setText(d.toString());
            backText=d.toString();

       }
       else if(preOp.equals("/"))
       {
       if (dFore==0){
       tfAnswer.setText("除数不能为0");
       return;
       }
resultNum = dBack / dFore ;
        d = new Double(resultNum);
         tfAnswer.setText(d.toString());
         backText=d.toString();

       }
        }
         preOp=currentOp;
       }//从结果文本框中获取数字
  
 private double getNumberFromText() 
 {
  double result = 0;
  try 
  {
   result = Double.valueOf(tfAnswer.getText()).doubleValue();
  } 
  catch (NumberFormatException e)
  {}
  return result;
 }
    public void doForeText(String s) {
     foreText+=s;
     tfAnswer.setText(foreText);
   }
   public void doBackText(String s){
     backText=foreText;
     foreText="";
     tfAnswer.setText(backText);
   }
  public void doClear() {
     currentOp="";
     preOp="";
     foreText="";
     backText="";
     isFloat=false;
     tfAnswer.setText(""); 
   }     
   } 
class  mc implements WindowListener
{
public void windowClosed(WindowEvent e){
System.exit(0);
}
public void windowActivated(WindowEvent e) {
}         
public void windowClosing(WindowEvent e) {
System.exit(0);
}          
public void windowDeactivated(WindowEvent e) {
}       
public void windowDeiconified(WindowEvent e) {
}        
public void windowIconified(WindowEvent e) {
}     
public void windowOpened(WindowEvent e) {
}
}