一下是我自己编写的计算器代码,但在第一次运行时,按下数字按钮再按运算按钮就变成0了,第二次运行时就正常了,就是不知道为什么,请高手指教?谢谢!
package majian;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
class subjframe extends JFrame{
public subjframe(){}
public subjframe(String title){
super(title);
}
}
public class Calculator {
     JFrame frame;int j,m=0;
     String  string2="";
     Container contentPane;     
     double numbers=0;
     char lastchar;
     JButton buttons[],equal,dot,plus,minus,multi,dive,sqrt,PN,clear,delete,currenttime,
             sec,csc,sin,cos,tan,cot,ln,twox,threex,manyx,empty1,empty2,
             empty3,empty4,empty5,instead;   
     JTextField result;JPanel pane1,pane2;
     boolean dotexist,equaledoperation,deltoperation;
     public Calculator(){
      frame=new subjframe("计算器");
      Container contentPane=frame.getContentPane();
      pane1=new JPanel();
      pane2=new JPanel();
      result=new JTextField("0",20);      
      result.setBackground(Color.white);
      result.setEditable(false);
      pane1.add(result);
      pane2.setLayout(new GridLayout(5,7,5,10));
      contentPane.add(pane1,BorderLayout.NORTH);
      contentPane.add(pane2,BorderLayout.SOUTH);
      buttons=new JButton[10];
      for(int i=0;i<=9;i++)
      buttons[i]=new JButton(""+i);
      empty1=new JButton("");
      empty2=new JButton("");
      empty3=new JButton("");
      empty4=new JButton("");
      empty5=new JButton("");
      delete=new JButton("delete");
      sin=new JButton("sin");
      cos=new JButton("cos");
      tan=new JButton("tan");
      cot=new JButton("cot");
      sec=new JButton("sec");
      csc=new JButton("csc");
      ln=new JButton("ln");
      instead=new JButton("1/x");
      dot=new JButton(".");
      plus=new JButton("+");
      minus=new JButton("-");
      multi=new JButton("*");
      dive=new JButton("÷");
      sqrt=new JButton("√");
      equal=new JButton("=");
      PN=new JButton("+/-"); 
      clear=new JButton("C");
      twox=new JButton("x^2");
      threex=new JButton("x^3");
      pane2.add(empty1);pane2.add(empty2);
      pane2.add(empty3);pane2.add(empty4);
      pane2.add(empty5);pane2.add(delete);
      pane2.add(clear);pane2.add(sin);
      pane2.add(cos);pane2.add(buttons[7]);     
      pane2.add(buttons[8]);pane2.add(buttons[9]);
       pane2.add(plus);pane2.add(twox);
      pane2.add(tan);pane2.add(cot);    
      pane2.add(buttons[4]);pane2.add(buttons[5]);
      pane2.add(buttons[6]);pane2.add(minus);
      pane2.add(threex);pane2.add(sec);
      pane2.add(csc);pane2.add(buttons[1]);
      pane2.add(buttons[2]);pane2.add(buttons[3]);
      pane2.add(multi);pane2.add(PN);
      pane2.add(instead);pane2.add(ln);
      pane2.add(buttons[0]);pane2.add(dot);
      pane2.add(equal);pane2.add(dive);pane2.add(sqrt);
      Action action=new Action();
      for(int i=0;i<=9;i++)
            buttons[i].addActionListener(action);     
      dot.addActionListener(action);
    
      delete.addActionListener(action);
      sin.addActionListener(action);
      cos.addActionListener(action);
      tan.addActionListener(action);
      cot.addActionListener(action);
      sec.addActionListener(action);
      csc.addActionListener(action);
      instead.addActionListener(action);
      ln.addActionListener(action);
      plus.addActionListener(action);
      minus.addActionListener(action);
      multi.addActionListener(action);
      dive.addActionListener(action);
      sqrt.addActionListener(action);
      equal.addActionListener(action);
      PN.addActionListener(action);
      clear.addActionListener(action);
      twox.addActionListener(action);
      threex.addActionListener(action);
      frame.setSize(500,400);
      frame.show();
     }
     //对按钮的反应
     private class Action implements ActionListener{
      public void actionPerformed(ActionEvent e){
      JButton get=(JButton)e.getSource();
      if(get==clear){
      result.setText("0");     
      numbers=0;
      dotexist=false;
      lastchar='E';
      }
      else if(get==plus){
     deltwith('+');
     equaledoperation=false;
     deltoperation=true;
      }
      else if(get==minus){
      deltwith('-');
      equaledoperation=false;
      deltoperation=true;
      }
      else if(get==multi){
      deltwith('*');
      equaledoperation=false;
      deltoperation=true;
      }
      else if(get==dive){
      deltwith('÷');
      equaledoperation=false;
      deltoperation=true;
      }
      else if(get==PN){
      deltwith('p');
      deltwith('=');
      equaledoperation=true; 
      deltoperation=true;
      }
      else if(get==sqrt){
      deltwith('s');
      deltwith('=');
      equaledoperation=true;
      deltoperation=true;
      }
      else if(get==equal){
      deltwith('=');
      equaledoperation=true;
      deltoperation=true;
      }
      else if(get==twox){
      deltwith('t');        //t表示求平方的字符
      equaledoperation=true;
      deltoperation=true;
      }
      else if(get==threex)  {
      deltwith('r');        //r表示求立方的字符
      equaledoperation=true;
      deltoperation=true;
      }
      else if(get==sin){
      deltwith('S');         //S表示求正弦的字符
      equaledoperation=true;
      deltoperation=true;
      }
      else if(get==cos){
      deltwith('c');           //c表示求余弦 的字符
      equaledoperation=true;   
      deltoperation=true;
      }
      else if(get==tan){
      deltwith('a');         //a表示求正切的字符
      equaledoperation=true;
      deltoperation=true;
      }
      else if(get==cot){
      deltwith('o');         //o表示求余切的字符
      equaledoperation=true;
      deltoperation=true;
      }
      else if(get==sec){
      deltwith('e');         //e表示求正割的字符
      equaledoperation=true;
      deltoperation=true;
      }
      else if(get==csc){
      deltwith('h');      //h表示求余割的字符
      equaledoperation=true;
      deltoperation=true;
      }
      else if(get==instead){
      deltwith('d');        //d表示求倒数的字符
      equaledoperation=true;
      deltoperation=true;
      }
      else if(get==ln){
      deltwith('l');      //l表示求对数的字符
      equaledoperation=true;
      deltoperation=true;
      }
      else if(get==delete){
      deltwith('D');
      equaledoperation=true;
      deltoperation=false;
      }
      else{
      for(int i=0;i<10;i++)
                    if(get==buttons[i]){
                     if(result.getText().equals("0"))
                              result.setText(""+i);                    
                         else if(!deltoperation)
                        result.setText(result.getText()+i);
                    else{
                     result.setText(""+i);
                     deltoperation=false;
                    }
      }
      }     
      if(get==dot&&!dotexist){
      result.setText(result.getText()+".");
      dotexist=true;
      }
      }
     }