下面有个有关简易计算器的JAVA程序,其中有个问题想向各位高手求救!  下面程序中的start在这个程序中起的什么作用?  我是新手,望大家多多指教!
  程序代码:
  import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class Calculator extends JFrame implements ActionListener
{
private double arg=0;
    private String op="=";
    private boolean start=true;
private JTextField disfield=new JTextField(12);
private JButton mbutton=new JButton("=");
private JButton []abutton={new JButton("7"),new JButton("8"),new JButton("9"),
new JButton("C"),new JButton("4"),new JButton("5"),new JButton("6"),
new JButton("*"),new JButton("1"),new JButton("2"),new JButton("3"),
new JButton("%"),new JButton("0"),new JButton("+"),new JButton("-"),
new JButton(".")};

public Calculator()
{

super("Calculator");
Container container=getContentPane();
container.setLayout(new FlowLayout(FlowLayout.CENTER));
container.add( disfield);
disfield.setEditable(false);
container.add(mbutton);
for(int i=0;i<16;i++)
{
container.add(abutton[i]);
}
setSize(200,200);
setVisible(true);


mbutton.addActionListener(this);
for(int i=0;i<16;i++)
{  
abutton[i].addActionListener(this);
}
}
public void actionPerformed(ActionEvent e)
{
  String s=e.getActionCommand();
      if('0'<=s.charAt(0) && s.charAt(0)<='9' 
                        || s.equals("."))
                        
      { 
        if(start)
          
          disfield.setText(s);
        else
           
          disfield.setText( disfield.getText()+s);
        start=false;
      }
      else if(s.equals("C"))
     
       {
        disfield.setText(" ");
        start=false;
      
       }
      else
      
       { 
         if(start)
          { 
            if(s.equals("-")) 
             {
              disfield.setText(s);
               start=false;
             }
            else
              op = s;
          }
          
          else 
           { 
              
              double x=Double.parseDouble(disfield.getText());
              //op=s;
              calculate(x);
              op=s;
              start=true;
           }
       }
     }
   public void calculate(double n)
   {  
    if(op.equals("+"))      arg+=n;
    else if(op.equals("-")) arg-=n;
    else if(op.equals("*")) arg*=n;  
    else if(op.equals("%")) arg%=n;
    else if(op.equals("=")) arg=n;
   disfield.setText(""+arg);
   }
  public static void main(String srgs[])
  {
  Calculator cpp=new Calculator();
  cpp.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  }
}

解决方案 »

  1.   

    start是表示第一次输入字符的标志位,如果已经输入了字符,标志位就是false了,以后就做else里面的内容
      

  2.   

    看我的!
    import java.awt.*;
    import javax.swing.*;
    import java.awt.event.*;
    import javax.swing.text.*;
    public class ex_9_9_9 extends JFrame implements ActionListener
    {
    public static void main(String[] args)
    {
    ex_9_9_9 cl=new ex_9_9_9();
    cl.addWindowListener(new WindowAdapter(){
    public void windowClosing(WindowEvent e){
    System.exit(0);}
    });
    } public ex_9_9_9()
    {
    super("TongShu");
    try{
    UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
    }
    catch(Exception e){}
    getContentPane().setLayout(new BorderLayout());
    text=new JTextField();
    text.setColumns(12);
    text.setHorizontalAlignment(JTextField.RIGHT);
    text.setEditable(false);
    getContentPane().add(BorderLayout.NORTH,text);
    JPanel panel=new JPanel();
    panel.setLayout(new GridLayout(4,4));
    JButton btn1=new JButton("1");
    JButton btn2=new JButton("2");
    JButton btn3=new JButton("3");
    JButton btni=new JButton("+");
    JButton btn4=new JButton("4");
    JButton btn5=new JButton("5");
    JButton btn6=new JButton("6");
    JButton btnii=new JButton("-");
    JButton btn7=new JButton("7");
    JButton btn8=new JButton("8");
    JButton btn9=new JButton("9");
    JButton btniii=new JButton("*");
    JButton btn0=new JButton("0");
    JButton btndot=new JButton(".");
    JButton btniiii=new JButton("/");
    JButton btn=new JButton("=");
    panel.add(btn1);
    panel.add(btn2);
    panel.add(btn3);
    panel.add(btnii);
    panel.add(btn4);
    panel.add(btn5);
    panel.add(btn6);
    panel.add(btniii);
    panel.add(btn7);
    panel.add(btn8);
    panel.add(btn9);
    panel.add(btniiii);
    panel.add(btn0);
    panel.add(btndot);
    panel.add(btni);
    panel.add(btn);
    getContentPane().add(BorderLayout.CENTER,panel);
    btn0.addActionListener(this);
    btn1.addActionListener(this);
    btn2.addActionListener(this);
    btn3.addActionListener(this);
    btn4.addActionListener(this);
    btn5.addActionListener(this);
    btn6.addActionListener(this);
    btn7.addActionListener(this);
    btn8.addActionListener(this);
    btn9.addActionListener(this);
    btndot.addActionListener(this);
    Listener lst=new Listener();
    btni.addActionListener(lst);
    btnii.addActionListener(lst);
    btniii.addActionListener(lst);
    btniiii.addActionListener(lst);
    btn.addActionListener(lst);
    text.addActionListener(new ActionListener(){
    public void actionPerformed(ActionEvent e){
    inputFlag=false;
    text.setText("");
    count1=0;
    count2=0;
    }
    });
    super.setSize(200,160);
    super.setVisible(true);
    } public void actionPerformed(ActionEvent e)
    {
    if(!inputFlag)
    {
    if (!((JButton)(e.getSource())).getActionCommand().equals("."))
    text.setText(text.getText()+((JButton)(e.getSource())).getActionCommand());
    else
    {
    for(int i=0;i<text.getText().length();i++)
    {
    if(text.getText().substring(i,i+1).equals(".")) return;
    }
    text.setText(text.getText()+"."); return;
    }
    }
    else
    {text.setText(((JButton)(e.getSource())).getActionCommand());inputFlag=false;}
    } class Listener implements ActionListener
    {
    public void actionPerformed(ActionEvent e)
    {
    if(!((JButton)(e.getSource())).getActionCommand().equals("="))
    action(((JButton)(e.getSource())).getActionCommand());
    else
        getResult(sumFlag);
    }
    } private void action(String str)
    {
    if(count1==0)
    count1=Double.parseDouble(text.getText());
    else if(!inputFlag)
    getResult(sumFlag);
    if(str.equals("+")) sumFlag=1;
    if(str.equals("-")) sumFlag=2;
    if(str.equals("*")) sumFlag=3;
    if(str.equals("/")) sumFlag=4;
    inputFlag=true;
    } private void getResult(int sumFlag)
    {
    count2=Double.parseDouble(text.getText());
    switch(sumFlag)
    {
    case 1:count1=count1+count2;break;
    case 2:count1=count1-count2;break;
    case 3:count1=count1*count2;break;
    case 4:count1=count1/count2;break;
    } text.setText(new Double(count1).toString());
    inputFlag=true;
    } private JTextField text;
    private double count1;
    private double count2;
    private boolean inputFlag=false;
    private int sumFlag=1;
    }