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();
}}
{
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();
}}
捧场,祝贺哈吧狗同志的本世纪初最伟大的发明
====================================
蛙哈哈,谢谢老猫,我最喜欢猫了\不过我老婆不让我买啊
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;
} } }}
另外,GEM按钮是用来保存一个数,比如你想保存一个运算结果,在以后的运算中作为一个操作数,那么你只需要在运算结果出来后,按一下GEM,这个数就保存在内存中,然后以后想用这个数就按GEM,这样这个数就可以用了~~~~~===============================================
另外,这是我学JAVA三个月后出来的,新手,有许多不正之处,欢迎指正!
可以不能连等,是一大缺陷,其实稍微改一下就有这个功能了,但愿你能把更好的版本贴出来(最好还能加一些其它的功能)。
come on!