else if( getSource == sqrt )
{

display.setText("开方");
if(operaPressed)
calculatAction();
if(!operaPressed && !equalPressed)
numberCalculated = tempNumber ;
operator = 's' ;
operaPressed = true;
numberPressed = false;
tempNumber = 0;
dotFactorial = 0;
}
else if( getSource == equals )
{
calculatAction();
display.setText(""+numberCalculated);
equalPressed = true;
numberPressed = false;
operaPressed = false;
    tempNumber = 0.0;
    dotFactorial = 0;
}
else if( getSource == MEM )
{
display.setText("保存这个数");
numberStored = numberCalculated;
operaPressed = false;
numberPressed = true;
equalPressed = false;
displayString = " ";
operator = ' ';
dotPressed = false;
tempNumber = 0.0;
numberCalculated = 0.0;
numAfterOperPressed = 0.0;
    dotFactorial = 0;
}
else if( getSource == GEM )
{
display.setText("取出保存的数");
tempNumber = numberStored;
}
else if( getSource == Clear )
{  operaPressed = false;
 numberPressed = true;
 equalPressed = false;
 displayString = " ";
 display.setText("0");
 operator = ' ';
 dotPressed = false;
 tempNumber = 0.0;
 numberCalculated = 0.0;
 numAfterOperPressed = 0.0;
 dotFactorial = 0;
}
else if( getSource == dot )
{
dotPressed = true;
displayString += '.';
display.setText(displayString); }
}
public void calculatAction()
{
switch(operator)
{
    case '+' : 
        numberCalculated = numberCalculated + tempNumber;
        break;
    case '-' :
     numberCalculated = numberCalculated - tempNumber;
     break;
    case '*' :
     numberCalculated = numberCalculated * tempNumber;
     break;
    case '/' :
     numberCalculated = numberCalculated / tempNumber;
     break;
    case 's' :
     numberCalculated = Math.sqrt(numberCalculated);
        }
}
void actionAfterPressNum (int i)
{
if(numberPressed)
{
displayString += i;
display.setText(displayString);
}
else 
{
displayString = Integer.toString(i);
display.setText("" + i);
}
if (dotPressed && numberPressed)
{
tempNumber += i*Math.pow(10,-(++dotFactorial));
}
else 
tempNumber = tempNumber*10 + i;
numberPressed = true;
}
public static void main(String args[])
{
Calculator cal = new Calculator();
}}

解决方案 »

  1.   

    偶帮你up。不过偶电脑连jdk都没有了。重装软件呢。
      

  2.   

    回复人: jialin_2004(老猫) ( ) 信誉:100  2004-11-12 14:47:00  得分: 0  
     
     
       捧场,祝贺哈吧狗同志的本世纪初最伟大的发明
      ====================================
    蛙哈哈,谢谢老猫,我最喜欢猫了\不过我老婆不让我买啊
     
      

  3.   

    这是我的,功能简单了点,只能两个数
    import java.lang.*;
    import javax.swing.*;
    import java.awt.*;
    import java.awt.event.*;
    public  class Calculator extends JFrame implements ActionListener{
    JTextField t;
    JButton jb;
    String result="";
    String fu="";
    String fu2="";
    int in;
    double r1=0;
    double r2=0;
    double rr;
    int flag=1;
    public static void main(String [] args){
    Calculator c=new Calculator();
        } Calculator(){
    JFrame frame=new JFrame("Calculator");
    Container c=frame.getContentPane ();
    c.setLayout (new GridBagLayout());
    GridBagConstraints g=new GridBagConstraints();
    g.fill=GridBagConstraints.BOTH;
    g.insets=new Insets(6,6,6,6);
    String s[]={"7","8","9","+","4","5","6","-","1","2","3","*","0","C","=","/"};
    g.gridy=1;
    g.gridx=0;
    g.gridwidth=4;
    t=new JTextField("0");
    t.setEnabled (false);
    c.add (t,g);
    g.gridy=2;
    for (int i = 0; i<s.length; i++)
        {
         JButton jb=new JButton(s[i]);
         g.gridx=i%4;
         if (i%4==0)  g.gridy++;
         g.gridwidth=1;
         g.gridheight=1;
         jb.addActionListener (this);
         c.add (jb,g);
        }
        frame.setSize (250,250);
    frame.setVisible (true);}void getValue(String s)
    { if (s.equalsIgnoreCase ("+"))
          rr=r1+r2;
        else if(s.equalsIgnoreCase ("-"))
          rr=r1-r2;
        else if(s.equalsIgnoreCase ("*"))
          rr=r1*r2;
        else if(s.equalsIgnoreCase ("/"))
          rr=r1/r2;
        String r=String.valueOf (rr);
    t.setText (r);
    result="";
    r1=0;
    r2=0;
    rr=0;} public void actionPerformed(ActionEvent e){
    String fu=((JButton)e.getSource ()).getText ();
    if(fu.equalsIgnoreCase ("C"))
          {
           t.setText ("0");
           r1=0;
           r2=0;
           rr=0;
           result="";
           flag=1;
          }
    try{
    in=Integer.parseInt (fu);
    if (result.length ()>=60)
    result=result;
    else
    result+=fu;
    if (result.startsWith ("0",0)&&result.length ()>1){
    result="0";
    }
    else
    t.setText (result); }
    catch(Exception ee){
    try{ if (!fu.equalsIgnoreCase ("=")&&flag==1&&result!="")
    {
    fu2=fu;
    t.setText ("0");
    r1=Double.parseDouble(result);
    result="";
                flag=0;
        }
       else
        {
         if (result!="")
         {
         r2=Double.parseDouble(result);      flag=1;
         System.out.println (r1+" "+r2);
         getValue(fu2);
         }
        }
        }
       catch(Exception flow){
        t.setText("ERROR");
        result="";
        rr=0;
       } } }}
      

  4.   

    开方可以用的啊,直接按sqrt按钮,再=就出来了
    另外,GEM按钮是用来保存一个数,比如你想保存一个运算结果,在以后的运算中作为一个操作数,那么你只需要在运算结果出来后,按一下GEM,这个数就保存在内存中,然后以后想用这个数就按GEM,这样这个数就可以用了~~~~~===============================================
    另外,这是我学JAVA三个月后出来的,新手,有许多不正之处,欢迎指正!
      

  5.   

    还不错,蛮人性化的。
    可以不能连等,是一大缺陷,其实稍微改一下就有这个功能了,但愿你能把更好的版本贴出来(最好还能加一些其它的功能)。
    come on!
      

  6.   

    漏洞太多啦小数点,O,都没有作存在的判断HOHO