还剩3页未读,继续阅读
文本内容:
importj__a.awt.*;importj__a.awt.event.*;importj__ax.swing.*;publicclassCalculatorextendsJFrameimplementsActionListener{privateJTextFieldtext;//显示计算结果的文本行privatecharop;//当前运算符privatedoublevalue;//当前计算结果值privatebooleanfirst;//表示是否为数值的第1个数字privatebooleancal;//是否为连续运算booleanclickable;//控制运算符是否可用booleanisTrue;//控制数字键是否可用intsign;//标志是什么原因导致异常publicCalculator{//TODOAuto-generatedconstructorstubsuper计算器;this.setSize280210;this.setLocation300240;this.setDefaultCloseOperationEXIT_ON_CLOSE;text=newJTextField
0.30;text.setHorizontalAlig__entJTextField.RIGHT;//设置对齐方式,右对齐text.setEditablefalse;//只能显示,不允许编辑this.getContentPane.addtextNorth;JPanelpanel=newJPanelnewGridLayout5455;//面板采用网格布局this.getContentPane.addpanel;Stringstr[]={sqrt+/-Backspa__C789/456*123-
0.=+};JButtonbuttons[]=newJButton[str.length];forinti=0;ibuttons.length;i++{buttons[i]=newJButtonstr[i];panel.addbuttons[i];buttons[i].addActionListenerthis;//为按钮注册单击__监听器}this.setVisibletrue;op=+;value=
0.0d;first=true;clickable=false;isTrue=true;sign=0;}publicvoiddisplay//将多个按钮中涉及到连续运算的相同的代码部分提出来单独作为一个方法{switchop//当按下第二个运算符时,进行前一个运算符的运算{case+:value+=Double.parseDoubletext.getText;break;//转换成浮点数后运算case-:value-=Double.parseDoubletext.getText;break;case*:value*=Double.parseDoubletext.getText;break;case/:ifDouble.parseDoubletext.getText==0{this.sign=1;clickable=false;isTrue=false;thrownewArithmeti__x__ption;}elsevalue/=Double.parseDoubletext.getText;break;}}publicvoidactionPerformedActionEvente//按钮单击的__处理方法{Stringcurrent=e.getActionCom__nd;//获取按钮标签try{ifcurrent==C//清除{text.setText
0.;//重新设置文本内容value=
0.0d;first=true;cal=false;//取消连续运算标记clickable=false;//设置运算符此时不可用isTrue=true;return;}ifcurrent==Backspa__clickable==true//退格{StringBufferstr1=newStringBuffertext.getText;if!text.getText.trim.equals
0.{//如果文本框显示的不是零ifstr
1.length!=1{text.setTextstr
1.deletestr
1.length-1str
1.length.toString;iftext.getText.trim.equals
0.sign=3;}else{text.setText
0.;str
1.setLength0;first=true;}}else{ifsign==3{text.setTextstr
1.deletestr
1.length-1str
1.length.toString;sign=0;}}isTrue=true;}ifcurrent.charAt0=0current.charAt0=9isTrue==true//0~9数字按钮{iffirst{text.setText;first=false;}text.setTexttext.getText+current;clickable=true;}ifcurrent==+||current==-||current==*||current==/clickable==true//加减乘除按钮{if!cal{value=Double.parseDoubletext.getText;op=current.charAt0;cal=true;}else{//连续运算display;op=current.charAt0;//取第二个运算符text.setText+value;}first=true;clickable=false;isTrue=true;}ifcurrent===clickable==trueisTrue==true//等于号按钮{display;text.setText+value;cal=false;first=true;clickable=false;isTrue=true;}ifcurrent==.clickable==trueisTrue==true//小数点{iftext.getText.trim.indexOf.!=-1{}else{text.setTexttext.getText+current;clickable=false;}}ifcurrent==sqrtclickable==true//平方根按钮{if!cal{value=Double.parseDoubletext.getText;ifvalue0{this.sign=2;clickable=false;isTrue=false;thrownewArithmeti__x__ption;}elsevalue=__th.sqrtvalue;}else{display;cal=false;ifvalue0{this.sign=2;clickable=false;isTrue=false;thrownewArithmeti__x__ption;}elsevalue=__th.sqrtvalue;}first=false;isTrue=false;text.setText+value;}ifcurrent==+/-clickable==true//取反按钮{if!calvalue=Double.parseDoubletext.getText;else{display;cal=false;}value=-value;first=false;isTrue=false;text.setText+value;}}catchArithmeti__x__ptionae{ifsign==1text.setText除数不能为零!;ifsign==2text.setText负数没有平方根!;}catchEx__ptionex{text.setText非法操作!;}}publicstaticvoid__inStringarg[]{newCalculator;}}。