就是这样的,要写一个计算器程序,实现这样的要求,在一个面板上添加了一个文本框用来输入数字和显示结果,另外用5个按钮表示加减乘除和等号,使用的时候就是在文本框内输入数字后,用鼠标点击运算符和等号,由程序在文本框内显示结果我大概的这样写了下
可是有很多问题
还请会的教教我怎么实现好啊
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class Test_5 extends JPanel{
static JTextField tf;
JButton btEqual,btAdd,btMinus,btMul,btDivide;
static String sop[]={"",""};
static int i=0;
static char op;
static boolean firstFlag=false;
static boolean doubleClick=true;
static boolean twoOpNumber=false;
static boolean dotFlag=true;
static String resultString="";
Test_5()
{
this.setLayout(new BorderLayout());
tf=new JTextField("0",20);
add(tf,BorderLayout.NORTH);
btAdd=new JButton("+");
btAdd.addActionListener(new ButtonAction());
btMinus=new JButton("-");
btMinus.addActionListener(new ButtonAction());
btMul=new JButton("*");
btMul.addActionListener(new ButtonAction());
btDivide=new JButton("/");
btDivide.addActionListener(new ButtonAction());
btEqual=new JButton("=");
btEqual.addActionListener(new ButtonAction());
JPanel p=new JPanel();
    p.setLayout(new GridLayout(2,3));
    p.add(btAdd);
    p.add(btMinus);
    p.add(btMul);
    p.add(btDivide);
    p.add(btEqual);
    add(p,BorderLayout.SOUTH);
 }
 class ButtonAction implements ActionListener{
  public void actionPerformed(ActionEvent e)
  {
  if(i==1&&doubleClick)
  {
  twoOpNumber=true;
  tf.setText("");
  }
  if(e.getSource()==btAdd)
  {
  sop[i]=sop[i]+Test_5.tf.getText().trim();
  dotFlag=true;
  if(doubleClick)
  {
   startCalcul();
  }
  op='+';
  doubleClick=false;
  }
  if(e.getSource()==btMinus)
  {
  sop[i]=sop[i]+Test_5.tf.getText().trim();
  dotFlag=true;
  if(doubleClick)
  {
   startCalcul();
  }
  op='-';
  doubleClick=false;
  }
  if(e.getSource()==btMul)
  {
  sop[i]=sop[i]+Test_5.tf.getText().trim();
  dotFlag=true;
  if(doubleClick)
  {
   startCalcul();
  }
  op='*';
  doubleClick=false;
  }
  if(e.getSource()==btDivide)
  {
  sop[i]=sop[i]+Test_5.tf.getText().trim();
  dotFlag=true;
  if(doubleClick)
  {
   startCalcul();
  }
  op='/';
  doubleClick=false;
  }
  if(e.getSource()==btEqual)
  {
  sop[i]=sop[i]+Test_5.tf.getText().trim();
  dotFlag=true;
  if(doubleClick)
  {
     startCalcul();
     twoOpNumber=false;
      }
   }  
  doubleClick=false;
  }
 }

 
   static void startCalcul()
{
if(firstFlag)
{
resultString=calcul();
sop[0]=resultString;
i=1;
sop[1]="";
tf.setText(resultString);
}
else
{
i=1;
}
firstFlag=true;
}
static String calcul()
{
float reult=0;
switch(op)
{
case'+':
reult=Float.parseFloat(sop[0])+Float.parseFloat(sop[i]);
break;
case'-':
reult=Float.parseFloat(sop[0])-Float.parseFloat(sop[i]);
break;
case'*':
reult=Float.parseFloat(sop[0])*Float.parseFloat(sop[i]);
break;
case'/':
reult=Float.parseFloat(sop[0])/Float.parseFloat(sop[i]);
break;
}
return(String.valueOf(reult));
}
public static void main(String args[])
{
JFrame frame=new JFrame("Calculator");
frame.addWindowListener(new CloseWindow());
frame.getContentPane().add(new Test_5());
frame.pack();
frame.setVisible(true);
}
}
class CloseWindow extends WindowAdapter
{
public void windowClosing(WindowEvent e)
{
System.exit(0);
}
}