发布一个计算器的JAVA程式 这是我上学的时候写的

 
//calculater
import java.awt.*;
import java.awt.event.*;
import javax.swing.*; 
import javax.swing.event.*; 
import java.awt.event.*; 
import java.text.DecimalFormat; 
import java.math.*;
public class Calculator
{
	public static void main(String args[])
	{
		ans8 calculator1=new ans8();
		calculator1.ning();
	}
}
//calculater
import java.awt.*;
import java.awt.event.*;
import javax.swing.*; 
import javax.swing.event.*; 
import java.awt.event.*; 
import java.awt.Window.*;
import java.text.DecimalFormat; 
import java.math.*;
class ans8 extends Frame
{
	static Frame frm=new Frame("计算器");
	static Frame help=new Frame("帮助主题");
	static Frame frm1=new Frame("About Calculator");	
	static Panel pn1=new Panel(new GridLayout(4,3,10,10));
	static Panel pn2=new Panel(new GridLayout(1,3,10,10));
	static Panel pn3=new Panel(new GridLayout(5,5,10,10));
	static Panel pn4=new Panel(new GridLayout(4,3,5,5));
	static TextField textAnswer=new TextField("0",50);
	static TextField Mr=new TextField("",1);//MR
	static TextArea help1=new TextArea("I'm sorry!\nI can't help you!\ntoDegrees是把pi转化成180度\ntoRadians刚好相反\ncosh双曲余弦\nsqrt根号\nExp:Returns Euler's number e raised to the power of a double value\nsinh双曲正弦\n");
	static TextArea about=new TextArea("计算器BETA1.0.0.4\n卢俊");
 	static MenuBar mb=new MenuBar();
 	static WinLis wlis=new WinLis();
 	static Button yes1=new Button("yes");
 	static Button yes2=new Button("yes");
 	
 	static Button btn1[]=new Button[12];
	static Button btn2[]=new Button[3];
	static Button btn3[]=new Button[25];
	static Button btn4[]=new Button[12];
	
	static Menu mb1=new Menu("编辑");
	static Menu mb2=new Menu("查看");
	static Menu mb3=new Menu("帮助");
	
	static MenuItem mi1=new MenuItem("复制");
	static MenuItem mi2=new MenuItem("粘贴");
	static MenuItem mi3=new MenuItem("退出");
	
	static MenuItem mi4=new MenuItem("标准型");
	static MenuItem mi5=new MenuItem("科学型");
	static MenuItem mi6=new MenuItem("数学分组");
	
	static MenuItem mi7=new MenuItem("帮助主题");
	static MenuItem mi8=new MenuItem("关于计算器"); 
	
	static Checkbox ckb1=new Checkbox("Inv");//可供多选的复选框
	static Checkbox ckb2=new Checkbox("Hyp");
 
 	static Checkbox ckb3=new Checkbox("十六进制");//可供单选
 	static Checkbox ckb4=new Checkbox("十进制");
 	static Checkbox ckb5=new Checkbox("八进制");
 	static Checkbox ckb6=new Checkbox("二进制");
 	
 	static Checkbox ckb7=new Checkbox("四字");
 	static Checkbox ckb8=new Checkbox("双字");
 	static Checkbox ckb9=new Checkbox("单字");
 	static Checkbox ckb10=new Checkbox("字节");
	static int i=0;
	public static Boolean clikable=true;//测试能不能按文本框的数字。上一次按的纽不是数字。
	public  static void ning()
	{
 		frm.setLayout(null);
		frm.setSize(520,300);
		frm.setBackground(Color.blue);//背景颜色
		
		textAnswer.setBounds(20,60,460,25);
		textAnswer.setBackground(new Color(255,255,255));//label color白色
		textAnswer.setEditable(false);
		
		Mr.setBounds(220,120,20,20);
		Mr.setBackground(Color.white);
		Mr.setEditable(false);
	
		yes1.addActionListener(new ActLis()); 
	
		if(i==0){//让frm只加buton一次
		
		pn1.setBounds(260,140,160,160);//pnl的位置
		
		for(int i=7;i<=9;i++)
		   pn1.add(btn1[i]=new Button(Integer.toString(i)));
		   	for(int i=4;i<=6;i++)
		   	pn1.add(btn1[i]=new Button(Integer.toString(i)));
				   	for(int i=1;i<=3;i++)
		   	pn1.add(btn1[i]=new Button(Integer.toString(i)));   	
		   pn1.add(btn1[0]=new Button(Integer.toString(0)));
		   pn1.add(btn1[10]=new Button("+/-"));
		   pn1.add(btn1[11]=new Button("."));
		pn1.setForeground(Color.blue);//she zhi yan she
		for(int i=0;i<=11;i++)
		{
			btn1[i].addActionListener(new ActLis()); 
		}

				
		pn2.setBounds(260,115,250,20);//pn2的位置
		pn2.add(btn2[0]=new Button("Backspace"));
		pn2.add(btn2[1]=new Button("CE"));
		pn2.add(btn2[2]=new Button("C"));
		pn2.setForeground(Color.red);//she zhi yan she
		for(int i=0;i<=2;i++)
		{
			btn2[i].addActionListener(new ActLis()); 
		}
		
		pn3.setBounds(10,140,240,160);//pn3的位置
		pn3.add(btn3[0]=new Button("toDegrees"));
		pn3.add(btn3[1]=new Button("toRadians"));
		pn3.add(btn3[2]=new Button("Arcos"));
		pn3.add(btn3[3]=new Button("Arcsin"));
		pn3.add(btn3[4]=new Button("MC"));
		pn3.add(btn3[5]=new Button("cosh"));
		pn3.add(btn3[6]=new Button("sqrt"));
		pn3.add(btn3[7]=new Button("Exp"));
		pn3.add(btn3[8]=new Button("ln"));
		pn3.add(btn3[9]=new Button("MR"));
		pn3.add(btn3[10]=new Button("sum"));
		pn3.add(btn3[11]=new Button("sin"));
		pn3.add(btn3[12]=new Button("x^y"));
		pn3.add(btn3[13]=new Button("lg"));
		pn3.add(btn3[14]=new Button("Ms"));
		pn3.add(btn3[15]=new Button("sinh"));
		pn3.add(btn3[16]=new Button("cos"));
		pn3.add(btn3[17]=new Button("x^3"));
		pn3.add(btn3[18]=new Button("n!"));
		pn3.add(btn3[19]=new Button("M+"));
		pn3.add(btn3[20]=new Button("Dat"));
		pn3.add(btn3[21]=new Button("tan"));
		pn3.add(btn3[22]=new Button("x^2"));
		pn3.add(btn3[23]=new Button("1/x"));
		pn3.add(btn3[24]=new Button("pi"));
		pn3.setForeground(Color.red);//she zhi yan she
		for(int i=0;i<=24;i++)
		{
			btn3[i].addActionListener(new ActLis()); 
		}
		
		pn4.setBounds(420,140,90,160);//pn4的位置	
		pn4.add(btn4[0]=new Button("/"));
		pn4.add(btn4[1]=new Button("Mod"));
		pn4.add(btn4[2]=new Button("And"));
		pn4.add(btn4[3]=new Button("*"));
		pn4.add(btn4[4]=new Button("or"));
		pn4.add(btn4[5]=new Button("Xor"));
		pn4.add(btn4[6]=new Button("-"));
		pn4.add(btn4[7]=new Button("lsh"));
		pn4.add(btn4[8]=new Button("net"));
		pn4.add(btn4[9]=new Button("+"));
		pn4.add(btn4[10]=new Button("="));
		pn4.add(btn4[11]=new Button("Int"));
		pn4.setForeground(Color.red);//she zhi yan she
		for(int i=0;i<=11;i++)
		{
			btn4[i].addActionListener(new ActLis()); 
		}
		i=1;
		}
	 	mb.add(mb1);
		mb.add(mb2);
		mb.add(mb3);
		
		mb1.add(mi1);
		mb1.add(mi2);
		mb1.add(mi3);
		
		mb2.add(mi4);
		mb2.add(mi5);
		mb2.add(mi6);
						
		mb3.add(mi7);
		mb3.add(mi8);
		
 		CheckboxGroup grp1=new CheckboxGroup();//单选群组
 		CheckboxGroup grp2=new CheckboxGroup();//单选群组
 			
		ckb1.setBounds(10,115,40,20);
		ckb2.setBounds(55,115,40,20);
		ckb1.setForeground(Color.white);//she zhi yan she
		ckb2.setForeground(Color.white);//she zhi yan she
		ckb1.addItemListener(new check());
		ckb2.addItemListener(new check());
			
		ckb3.setBounds(10,90,63,20);	
		ckb4.setBounds(75,90,63,20);
		ckb5.setBounds(140,90,63,20);
		ckb6.setBounds(205,90,63,20);
		ckb7.setBounds(270,90,63,20);
		ckb8.setBounds(335,90,63,20);
		ckb9.setBounds(400,90,63,20);
		ckb10.setBounds(465,90,63,20);

		ckb3.setCheckboxGroup(grp1);
		ckb4.setCheckboxGroup(grp1);
		ckb5.setCheckboxGroup(grp1);
		ckb6.setCheckboxGroup(grp1);
		ckb4.setState(true);
		ckb3.setForeground(Color.white);//she zhi yan she
		ckb4.setForeground(Color.white);//she zhi yan she
		ckb5.setForeground(Color.white);//she zhi yan she
		ckb6.setForeground(Color.white);//she zhi yan she
		ckb3.addItemListener(new check());
		ckb4.addItemListener(new check());
		ckb5.addItemListener(new check());
		ckb6.addItemListener(new check());
		ckb7.addItemListener(new check());
		ckb8.addItemListener(new check());
		ckb9.addItemListener(new check());
		ckb10.addItemListener(new check());
		
		ckb7.setCheckboxGroup(grp2);
		ckb8.setCheckboxGroup(grp2);
		ckb9.setCheckboxGroup(grp2);
		ckb10.setCheckboxGroup(grp2);
		ckb9.setState(true);
		ckb7.setForeground(Color.white);//she zhi yan she	
		ckb8.setForeground(Color.white);//she zhi yan she
		ckb9.setForeground(Color.white);//she zhi yan she
		ckb10.setForeground(Color.white);//she zhi yan she
		
		mi1.addActionListener(new menu()); 
		mi2.addActionListener(new menu()); 
		mi3.addActionListener(new menu()); 
		mi4.addActionListener(new menu()); 
		mi5.addActionListener(new menu()); 
		mi6.addActionListener(new menu()); 
		mi7.addActionListener(new menu()); 
		mi8.addActionListener(new menu()); 
 
 		
		frm.setMenuBar(mb); 
		frm.add(textAnswer);
		frm.add(Mr);
		frm.add(pn1);
		frm.add(pn2);
		frm.add(pn3);
		frm.add(pn4);
		frm.add(ckb1);
		frm.add(ckb2);
		frm.add(ckb3);
		frm.add(ckb4);
		frm.add(ckb5);
		frm.add(ckb6);
		frm.add(ckb7);
		frm.add(ckb8);
		frm.add(ckb9);
		frm.add(ckb10);
		frm.addWindowListener(wlis);

		frm.setVisible(true);	
		
		help.setLayout(null);
		help.setSize(300,320);
		help.setBackground(Color.green);//背景颜色
		
		help1.setBounds(20,55,200,200);
		help1.setForeground(new Color(0,0,0));//label color白色
		help1.setEditable(false);
		
		yes1.setBounds(250,260,30,20);
		
		help.add(help1);
		help.add(yes1);	
		
		frm1.setLayout(null);
		frm1.setSize(300,300);
		frm1.setBackground(Color.green);//背景颜色
		
		about.setBounds(30,40,180,150);
		about.setForeground(new Color(0,0,0));//label color白色
		about.setEditable(false);
		yes2.setBounds(240,250,30,20);
		frm1.add(about);
		frm1.add(yes2);
		yes2.addActionListener(new ActLis()); 
		
	}
	
	
	static class ActLis implements ActionListener
	{
		static double memory=0;//yuan lai内存里的数值。
	    static int an=0;//是否是连续按四则运算键
	    static boolean bbs=true;//用来判断是否是第一次按四则运算键。		
		static double vard, answerd=0; //用来保存double型数据的中间值(vard)和最后结果(answerd) 
		static double memoryd=0;
		static boolean mr=false;//用来测试是否连续按MR键。	
		static short key = -1, prekey = -1; //key用来保存当前进行何种运算,prekey用来保存前次进行何种运算 
		static double btn3_12;//x^y
		static boolean btn3_12_able=false;//x^y
		public void actionPerformed(ActionEvent e)
		{
			Button btn = (Button) e.getSource(); //取得button对象	
			
			//设置各个按钮行为 
			try { 
					//按下数据按钮,将按下的按钮代表的数据插入的当前文本框字符串之后 
				for (int i = 0; i <= 9; i++) 
				{

					if (btn == btn1[i] ) {
						String s = textAnswer.getText();
						if(s.length()==1&&s.charAt(0)=='0') {textAnswer.setText(Integer.toString(i));clikable=true;}else	
						if(clikable)
						{textAnswer.setText(textAnswer.getText() + Integer.toString(i));}
						else
						{textAnswer.setText(Integer.toString(i));clikable=true;}
					}
				}
						
				
				//正否号的操作。 
				if (btn == btn1[10]) { 
					boolean isNumber = true; 
					String s = textAnswer.getText(); 
					for (int i = 0; i < s.length(); i++) 
					if (! (s.charAt(i) >= '0' && s.charAt(i) <= '9' || s.charAt(i) == '.' || s.charAt(i) == '-')) 
					{ 
					isNumber = false; 
					break; 
					} 
					if (isNumber == true) { 
					//如果当前字符串首字母有′-′号,代表现在是个负数,再按下时,则将首符号去掉 
					if (s.charAt(0) == '-') { 
					textAnswer.setText(""); 
					for (int i = 1; i < s.length(); i++) { 
					char a = s.charAt(i); 
					textAnswer.setText(textAnswer.getText() + a); 
					} 
					} 
					//如果当前字符串第一个字符不是符号,则添加一个符号在首字母处 
					else textAnswer.setText( '-' + s); 
					} 
				memory=Double.parseDouble(textAnswer.getText());
				 textAnswer.setText(Double.toString(memory));	    
			} 
			//'.'的操作
			if(btn == btn1[11] ){
				boolean dian=false;
				String s = textAnswer.getText(); 
					for (int i = 0; i < s.length(); i++) 
					{if (s.charAt(i) == '.' ) dian=true; else ; }
					if(dian==false)
				textAnswer.setText(textAnswer.getText() + '.');
				    else ;
				    clikable=true;
			}
			//'/'
			if(btn == btn4[0])
			{
				clikable = false;
				if(an==0) {	answerd = Double.parseDouble(textAnswer.getText());		an=1;	
			if(bbs) {	answerd = Double.parseDouble(textAnswer.getText()); memory=answerd;} else{
				answerd = Double.parseDouble(textAnswer.getText());			
			 switch (prekey) { 
				case 0: 
				answerd = memory + answerd;textAnswer.setText(Double.toString(answerd)); 	memory=answerd;
				break; 
				case 1: 
				answerd = memory - answerd;textAnswer.setText(Double.toString(answerd)); 	memory=answerd;
				break; 
				case 2: 
				answerd = memory * answerd;textAnswer.setText(Double.toString(answerd)); 	memory=answerd;
				break; 
				case 3: 
				if (Double.parseDouble(textAnswer.getText()) == 0) { 
				textAnswer.setText("除数不能为零"); 			
				} 
				else 
				answerd = memory / answerd;textAnswer.setText(Double.toString(answerd)); 	memory=answerd;
				break; 	
				default:break;		
				} 
				} 
				} 	else ;
				prekey = key = 3; 			
				bbs=false;			
			}
			//'*'
			if(btn == btn4[3])
			{
				clikable=false; 
				answerd = Double.parseDouble(textAnswer.getText());
				if(bbs) { memory=answerd;} else{				
			switch (prekey) { 
			case 0: 
			answerd =  memory + answerd;
			break; 
			case 1: 
			answerd =  memory - answerd;
			break; 
			case 2: 
			answerd =  memory * answerd;
			break; 
			case 3: 
			if (Double.parseDouble(textAnswer.getText()) == 0) { 
			textAnswer.setText("除数不能为零"); 
			clikable = false; 
			} 
			else 
			answerd =  memory / answerd;
			break; 
			default:break;
			} 
			
			} 
		
			textAnswer.setText(Double.toString(answerd)); 
			prekey = key = 2; 
			bbs=false;
			an=1;
			memory=answerd;
			}
			//'-'
			if(btn == btn4[6]) 
			{if(an==0) {	answerd = Double.parseDouble(textAnswer.getText()); 
				if(bbs) {memory=answerd;} else{
				 switch (prekey) { 
				case 0: 
				answerd = memory + answerd;
				break; 
				case 1: 
				answerd = memory - answerd;
				break; 
				case 2: 
				answerd =memory * answerd;
				break; 
				case 3: 
				if (Double.parseDouble(textAnswer.getText()) == 0) { 
				textAnswer.setText("除数不能为零"); 
				} 
				else 
				answerd = memory / answerd;
				break; 
				default:break;
				} 
				}
				} else ;
			textAnswer.setText(Double.toString(answerd)); 
			bbs=false;
			an=1;
			prekey = key = 1; 
			memory=answerd;
			}
			//'+'
			if(btn == btn4[9]) 
			{if(an==0) {	answerd = Double.parseDouble(textAnswer.getText());
				if(bbs) { memory=answerd;} else{
			switch (prekey) {
			case 0: 
			answerd = memory + answerd;
			break; 
			case 1: 
			answerd = memory - answerd;
			break; 
			case 2: 
			answerd = memory * answerd;
			break; 
			case 3: 
			if (Double.parseDouble(textAnswer.getText()) == 0) { 
			textAnswer.setText("除数不能为零"); 
			} 
			else 
			answerd = memory / answerd;
			break; 
			default:break;
			} 
			}
			}  else ;
			clikable=false; 
			textAnswer.setText(Double.toString(answerd)); 
			bbs=false;
			an=1;
			prekey = key = 0; 
			memory=answerd;
			}
			//'='
			if (btn == btn4[10] ) { 
			answerd = Double.parseDouble(textAnswer.getText());
			//如果连续按′=′,则进行连续运算
			if (prekey == 5) { 
			if (key == 0) { 
			answerd = memory + vard; 
			textAnswer.setText(Double.toString(answerd)); 
			} 
			if (key == 1) { 
			answerd = memory - vard; 
			textAnswer.setText(Double.toString(answerd)); 
			} 
			if (key == 2) { 
			answerd = memory * vard; 
			textAnswer.setText(Double.toString(answerd)); 
			} 
			if (key == 3) { 
			if (Double.parseDouble(textAnswer.getText()) == 0) { 
			textAnswer.setText("除数不能为零"); 
			clikable = false; 
			} 
			else { 
			answerd =  memory / vard; 
			textAnswer.setText(Double.toString(answerd)); 
			} 
			} 
			}//liang xu an "="
			 
			else { 
			vard = Double.parseDouble(textAnswer.getText()); 
			if (key == 0) { 
			prekey = -1; 
			answerd = memory + answerd;memory=answerd;
			textAnswer.setText(Double.toString(answerd)); 
			} 
			if (key == 1) { 
			prekey = -1; 
			answerd = memory - answerd;memory=answerd;
			textAnswer.setText(Double.toString(answerd)); 
			} 
			if (key == 2) { 
			prekey = -1; 
			answerd = memory * answerd;memory=answerd;
			textAnswer.setText(Double.toString(answerd)); 
			} 
			if (key == 3) { 
			prekey = -1; 
			if (Double.parseDouble(textAnswer.getText()) == 0) { 
			textAnswer.setText("除数不能为零"); 
			clikable = false; 
			} 
			else { 
			answerd =memory / answerd; memory=answerd;
			textAnswer.setText(Double.toString(answerd)); 
			} 
			} 
			} 
			bbs=true;
			clikable=false;
			memory=answerd;
			prekey = 5; 
			an=0;
			}
			//"Bakespace"
			if(btn == btn2[0]){
				String s = textAnswer.getText(); 
				if(s.length()>0){
				
				textAnswer.setText(""); 
				for (int i = 0; i < s.length() - 1; i++) { 
					char a = s.charAt(i); 
					textAnswer.setText(textAnswer.getText() + a); 
				} 
				}
				
				else{
					textAnswer.setText("0");
				}
			}
			//"CE"
			if(btn == btn2[1]){
				textAnswer.setText("0");
				clikable=true;
			}
			//"C"
			if(btn == btn2[2]){
				vard = answerd = 0; 
				textAnswer.setText("0");
				memory=0;
				clikable=true;
				an=0;
				bbs=true;
			}
			
			if(btn==btn4[1]){//mod
				
			}
			if(btn==btn4[2]){//and
				
			}
			if(btn==btn4[4]){//or
				
			}
			if(btn==btn4[5]){//Xor D:\docs\api\java\math\BigInteger.html
				/* BigInteger btn4_5=new BigInteger(textAnswer.getText());
				 BigInteger jj=new BigInteger(textAnswer.getText());
				 btn4_5=jj.xor(btn4_5);
				 //int i=BigInteger.bitCount(btn4_5,btn4_5);
				 String s=long.toString(btn4_5);
			 	 textAnswer.setText(s); */
			}
			if(btn==btn4[7]){//lsh
				
			}
			if(btn==btn4[8]){//net
			}
			if(btn==btn4[11]){//Int
				String s=textAnswer.getText();
				textAnswer.setText("");
				for(int i=0;i<s.length();i++){
					if(s.charAt(i)=='.') break;
					textAnswer.setText(textAnswer.getText()+s.charAt(i));
				}
				
			}
			if(btn==btn3[0]){//new Button("toDegrees"));
				double btn3_17=Double.parseDouble(textAnswer.getText());
				btn3_17=Math.toDegrees(btn3_17);
				textAnswer.setText(Double.toString(btn3_17));
			}
			if(btn==btn3[1]){//new Button("toRad"));
				double btn3_17=Double.parseDouble(textAnswer.getText());
				btn3_17=Math.toRadians(btn3_17);
				textAnswer.setText(Double.toString(btn3_17));
			}
			if(btn==btn3[2]){//new Button("arcos"));
				double btn3_17=Double.parseDouble(textAnswer.getText());
				btn3_17=Math.acos(btn3_17);
				textAnswer.setText(Double.toString(btn3_17));
			}
			if(btn==btn3[3]){//new Button("arcsin"));
				double btn3_17=Double.parseDouble(textAnswer.getText());
				btn3_17=Math.asin(btn3_17);
				textAnswer.setText(Double.toString(btn3_17));
			}
			if(btn==btn3[4]){//new Button("MC"));
				mr=false;memoryd=0;Mr.setText("");
			}
			if(btn==btn3[5]){//new Button("cosh"));
				double btn3_17=Double.parseDouble(textAnswer.getText());
				btn3_17=Math.cosh(btn3_17);
				textAnswer.setText(Double.toString(btn3_17));
			}
			if(btn==btn3[6]){//new Button("sqrt"));
				double btn3_17=Double.parseDouble(textAnswer.getText());
				btn3_17=Math.sqrt(btn3_17);
				textAnswer.setText(Double.toString(btn3_17));
			}
			if(btn==btn3[7]){//new Button("Exp"));
				double btn3_17=Double.parseDouble(textAnswer.getText());
				btn3_17=Math.exp(btn3_17);
				textAnswer.setText(Double.toString(btn3_17));
			}
			if(btn==btn3[8]){//new Button("ln"));
				double btn3_17=Double.parseDouble(textAnswer.getText());
				btn3_17=Math.log(btn3_17);
				textAnswer.setText(Double.toString(btn3_17));
			}
			if(btn==btn3[9]){//new Button("MR"));
				
			if(mr==false) {memoryd=0;Mr.setText("");}
			if (memoryd != 0) 
			textAnswer.setText(Double.toString(memoryd)); 
			mr=false;
			clikable=false;
			}
			if(btn!=btn3[9]) mr=true;//
			if(btn==btn3[10]){//new Button("sum"));
				textAnswer.setText(Double.toString(memoryd)); 
			}
			if(btn==btn3[11]){//new Button("sin"));
				double btn3_17=Double.parseDouble(textAnswer.getText());
				btn3_17=Math.sin(btn3_17);
				textAnswer.setText(Double.toString(btn3_17));
			}
			if(btn==btn3[12]){//new Button("x^y"));
				double btn3_17=Double.parseDouble(textAnswer.getText());
				if(btn3_12_able){
					btn3_17=Math.pow(btn3_12,btn3_17);
					textAnswer.setText(Double.toString(btn3_17));
					btn3_12_able=false;
				}
				else { btn3_12=Double.parseDouble(textAnswer.getText());btn3_12_able=true;}
			
			}
			if(btn==btn3[13]){//new Button("log"));
				double btn3_17=Double.parseDouble(textAnswer.getText());
				btn3_17=Math.log10(btn3_17);
				textAnswer.setText(Double.toString(btn3_17));	
			}
			if(btn==btn3[14]){//new Button("Ms"));
				
			}
			if(btn==btn3[15]){//new Button("sinh"));
				double btn3_17=Double.parseDouble(textAnswer.getText());
				btn3_17=Math.sinh(btn3_17);
				textAnswer.setText(Double.toString(btn3_17));	
			}
			if(btn==btn3[16]){//new Button("cos"));
				double btn3_17=Double.parseDouble(textAnswer.getText());
				btn3_17=Math.cos(btn3_17);
				textAnswer.setText(Double.toString(btn3_17));	
			}
			if(btn==btn3[17]){//new Button("x^3"));
				double btn3_17=Double.parseDouble(textAnswer.getText()); 
				btn3_17=Math.pow(btn3_17,3.0);
				textAnswer.setText(Double.toString(btn3_17));
			}
			if(btn==btn3[18]){//new Button("n!"));
			
				long jiecheng=Long.parseLong(textAnswer.getText());
				double jie=1;
				for(int i=1;i<=jiecheng;i++){
					jie=jie*i;
				}
				textAnswer.setText(Double.toString(jie)); 
				clikable=false;
			}
			if(btn==btn3[19]){//new Button("M+"));
				Mr.setText("M"); mr=true;
				memoryd = memoryd + Double.parseDouble(textAnswer.getText());
				clikable=false;
			}
			if(btn==btn3[20]){//new Button("Dat"));
				
			}
			if(btn==btn3[21]){//new Button("tan"));
				double btn3_21=Double.parseDouble(textAnswer.getText()); 
				btn3_21=Math.tan(btn3_21);
				textAnswer.setText(Double.toString(btn3_21));
			}
			if(btn==btn3[22]){//new Button("x^2"));
				double btn3_22=Double.parseDouble(textAnswer.getText()); 
				textAnswer.setText(Double.toString(btn3_22*btn3_22));	 
			}
			if(btn==btn3[23]){//new Button("1/x"));
				double btn3_21=Double.parseDouble(textAnswer.getText()); 
				btn3_21=1.0/btn3_21;
				textAnswer.setText(Double.toString(btn3_21));
			}
			if(btn==btn3[24]){// Button("pi"));
				textAnswer.setText("3.1415926535897932384626433832795"); clikable=false;
			}
			//如果按键不是四则运算键,则an=0;
			if(btn!=btn4[0] && btn!=btn4[3] && btn!=btn4[6] && btn!=btn4[9])
			{
				an=0;
			}
			//
			if(btn==yes1){//按下帮助对话框中的确定按钮
				help.dispose();
			}
			if(btn==yes2){//按下about calculator对话框中的确定按钮
				frm1.dispose();
			}
			//如果按下的不是数字键或'.''+/-'clikable=false
			boolean testclikable=false;
			for(int i=0;i<12;i++){
				if(btn==btn1[i]) testclikable=true;
			} 
			if(!testclikable){
				 clikable=false;
				 	//如按下的不是数字键,把".0"给去掉
				 	String s = textAnswer.getText(); 
					int a=s.length();
					if(a>=2)
					if(s.charAt(a-1)=='0' && s.charAt(a-2)=='.'){
					textAnswer.setText("");
							for(int j=0;j<s.length()-2;j++){
							textAnswer.setText(textAnswer.getText()+s.charAt(j));
							}
					}
					if(s.length()==0){//
					textAnswer.setText("0");
					}
			}
			
  		
  			   

  	  }
  	  	//输入中如果有操作非法,
	 finally{}	 	 
	
    }
    }
    static class menu implements ActionListener
    {
    	static String copy;//用来复制
    		
    	public void actionPerformed(ActionEvent e)
    	{
    		MenuItem mi=(MenuItem) e.getSource();//取得menu对象	
    		if(mi==mi1)//copy
			{copy = textAnswer.getText();clikable=false;}
			if(mi==mi2)//Paste
			 {textAnswer.setText(copy);clikable=false;}
	 		if(mi==mi3)
			 System.exit(0);
			 if(mi==mi4)
			 {
	 		ans8_0 calcu=new ans8_0();
	 		calcu.Calculator1();
	 		frm.dispose();
			 }
			 if(mi==mi5)
			 {
	 			frm.setVisible(true);
			 }
			 if(mi==mi6){//科学分组
			 }
			 if(mi==mi7)//help???
			 {
			 	help.setLocation(28,30);
			 	help.setVisible(true);	
			 }
			 if(mi==mi8){//about calculator
				frm1.setLocation(28,30);
			 	frm1.setVisible(true);	
			 }
		}
	
    }
    //ItemEvent
    static class check implements ItemListener
    {
    	static int perkey=10;//前一个进制
   		public void itemStateChanged(ItemEvent e)
   		
    {
    	
    	if(ckb1.getState()==true){//new Checkbox("Inv");
    		
    	}
    	if(ckb2.getState()==true){//new Checkbox("Hyp");
    		
    	}
    	if(ckb3.getState()==true){//ckb3=new Checkbox("十六进制");
    		switch(perkey){
    			case 10:{//10->16
    				Double d=Double.parseDouble(textAnswer.getText());	
    				String s=Decimal.toHexad(d);
    				textAnswer.setText(s);
    				break;
    			}
    			case 2:{//2>16
    				try{
    					String s=textAnswer.getText();    					
    					s=Binary.toHexad(s);
    					textAnswer.setText(s);
    					break;
    				}    				
    				catch(NoBinaryException i){
						textAnswer.setText("不是二进制!!!");
					}
    			}
    			case 8:{
    					String s=textAnswer.getText();
    					s=Bajinzhi.toHexad(s);
    					textAnswer.setText(s);
    					break;
    			}
    			default:
    		}
    		perkey=16;
    		
    	}
    	if(ckb4.getState()==true){//ckb4=new Checkbox("十进制");
    		switch(perkey){
    			case 16:{//16->10
    				try{
    					String s=textAnswer.getText();
    					Double d=Hexad.toDecimal(s);
    					textAnswer.setText(Double.toString(d));
    					break;
    				}
    				catch(NotHexadException i){
						textAnswer.setText("不是十六进制!!!");
					}
    				
    			}
    			case 8:{
    					String s=textAnswer.getText();
    					Double d=Bajinzhi.toDecimal(s);
    					textAnswer.setText(Double.toString(d));
    					break;    				
    				
    			}
    			case 2:{
    				try{
    					String s=textAnswer.getText();	    				
	    				Double d=Binary.toDecimal(s);
    					textAnswer.setText(Double.toString(d));
    					break;
    				}
    				catch(NoBinaryException i){
						textAnswer.setText("不是二进制!!!");
					}
    			}
    			default:    			
    		}
    		perkey=10;
    	}
    	if(ckb5.getState()==true){//ckb5=new Checkbox("八进制");
    		switch(perkey){
    			case 10:{//10->8

    					Double d=Double.parseDouble(textAnswer.getText());	    				
    					String s=Decimal.toBajinzhi(d);
    					textAnswer.setText(s);
    					break;
    			

    			}
    			case 16:{
    				try{
    					String s=textAnswer.getText();    					
    					s=Hexad.toBajinzhi(s);
    					textAnswer.setText(s);
    					break;
    				}
    				catch(NotHexadException i){
						textAnswer.setText("不是十六进制!!!");
					}
    				
    			}
    			case 2:{
    				try{
    					String s=textAnswer.getText();    					
    					s=Binary.toBajinzhi(s);
    					textAnswer.setText(s);
    					break;
    				}
    				catch(NoBinaryException i){
						textAnswer.setText("不是二进制!!!");
					}
    				
    			}
    			default:
    		}
    		perkey=8;
    	}
    	if(ckb6.getState()==true){//static Checkbox ckb6=new Checkbox("二进制");
    		switch(perkey){
    			case 16:{//16->2
    				try{
    					String s=textAnswer.getText();    					
    					s=Hexad.toBinary(s);
    					textAnswer.setText(s);
    					break;
    				}
    				catch(NotHexadException i){
						textAnswer.setText("不是十六进制!!!");
					}
    			}
    			case 10:{
    				Double d=Double.parseDouble(textAnswer.getText());
    				String s=Decimal.toBinary(d);
    				textAnswer.setText(s);
    				break;
    			}
    			case 8:{
    				try{
    					String s=textAnswer.getText();    				
    					s=Bajinzhi.toBinary(s);
    					textAnswer.setText(s);
    					break;
    				}
    				catch(NotBajinzhiException b){
						textAnswer.setText("不是八进制!!!");
					}
				}
    			default:
    		}
    		perkey=2;
    	}
    	if(ckb7.getState()==true){//("四字")
    		
    	}
    	if(ckb8.getState()==true){//("双字");
    		
    	}
    	if(ckb9.getState()==true){//("单字");
    		
    	}
    	if(ckb10.getState()==true){//("字节");
    		
    	}
    }
    }
    
    static class WinLis extends WindowAdapter
    {
    	public void windowClosing(WindowEvent e)
    	{
    		frm.dispose();
    	} 
    }
    
   
}    

import java.awt.*; 
import java.lang.*; 
import javax.swing.*; 
import javax.swing.event.*; 
import java.awt.event.*; 
import java.text.DecimalFormat; 

class ans8_0 implements ActionListener 
{ //导入动作监听接口 
//设计面板中的单位 
JFrame frame; 
JTextField textAnswer; 
JPanel panel, panel1, panel2, panel3; 
JMenuBar mainMenu; 
JTextField textMemory; 
JLabel labelMemSpace; //labelMemSpace单纯做摆设,控制面板的形状 
JButton buttonBk, buttonCe, buttonC; 
JButton button[]; 
JButton buttonMC, buttonMR, buttonMS, buttonMAdd; 
JButton buttonDot, buttonAddAndSub, buttonAdd, buttonSub, buttonMul, 
buttonDiv, buttonMod; 
JButton buttonSqrt, buttonDao, buttonEqual; 
JMenu editMenu, viewMenu, helpMenu; 
JMenuItem copyItem, pasteItem, tItem, sItem, numberGroup, topHelp, aboutCal; 
DecimalFormat df; //设置数据输出精度 
boolean clickable; //控制当前能否按键 
double memoryd; //使用内存中存储的数字 
int memoryi; 
double vard, answerd; //用来保存double型数据的中间值(vard)和最后结果(answerd) 
short key = -1, prekey = -1; //key用来保存当前进行何种运算,prekey用来保存前次进行何种运算 
String copy; //做复制用 
JTextArea help; //帮助 
JScrollPane scrollHelp; 
//构造函数 
public void Calculator1() { 
clickable = true; 
answerd = 0; 
frame = new JFrame("计算器"); 
df = new DecimalFormat("0.##############"); //设置数据输出精度(对于double型值) 
textAnswer = new JTextField(15); 
textAnswer.setText(""); 
textAnswer.setEditable(false); 
textAnswer.setBackground(new Color(255, 255, 255)); 
panel = new JPanel(); 
frame.getContentPane().add(panel); 
panel1 = new JPanel(); 
panel2 = new JPanel(); 
panel.setLayout(new BorderLayout()); 
//设计整个面板 
mainMenu = new JMenuBar(); 
editMenu = new JMenu("编辑(E)"); 
viewMenu = new JMenu("查看(V)"); 
helpMenu = new JMenu("帮助(H)"); 
copyItem = new JMenuItem(" 复制(C) Ctrl+C"); 
copyItem.addActionListener(this); 
pasteItem = new JMenuItem(" 粘贴(V) Ctrl+V"); 
pasteItem.addActionListener(this); 
editMenu.add(copyItem); 
editMenu.add(pasteItem); 
tItem = new JMenuItem("●标准型(T)"); 
tItem.addActionListener(this); 
sItem = new JMenuItem(" 科学型(S)"); 
sItem.addActionListener(this); 
numberGroup = new JMenuItem(" 数字分组(I)"); 
numberGroup.addActionListener(this); 
viewMenu.add(tItem); 
viewMenu.add(sItem); 
viewMenu.add(numberGroup); 
topHelp = new JMenuItem(" 帮助主题(H)"); 
topHelp.addActionListener(this); 
help = new JTextArea(5, 20); 
scrollHelp = new JScrollPane(help); 
help.setEditable(false); 
help.append("执行简单计算\n"); 
help.append("1. 键入计算的第一个数字。\n"); 
help.append("2. 单击“+”执行加、“-”执行减、“*”执行乘或“/”执行除。\n"); 
help.append("3. 键入计算的下一个数字。\n"); 
help.append("4. 输入所有剩余的运算符和数字。\n"); 
help.append("5. 单击“=”。\n"); 
aboutCal = new JMenuItem(" 关于计算器(A)"); 
aboutCal.addActionListener(this); 
helpMenu.add(topHelp); 
helpMenu.add(aboutCal); 
mainMenu.add(editMenu); 
mainMenu.add(viewMenu); 
mainMenu.add(helpMenu); 
panel.add(mainMenu, BorderLayout.NORTH); 
panel.add(textAnswer, BorderLayout.CENTER); 
panel.add(panel1, BorderLayout.SOUTH); 
panel1.setLayout(new BorderLayout()); 
textMemory = new JTextField(3); 
textMemory.setEditable(false); 
textMemory.setBackground(new Color(217, 217, 217)); 
labelMemSpace = new JLabel(" "); 
buttonBk = new JButton("Backspace"); 
buttonBk.setForeground(new Color(255, 0, 0)); 
buttonCe = new JButton("CE"); 
buttonCe.setForeground(new Color(255, 0, 0)); 
buttonC = new JButton("C"); 
buttonC.setForeground(new Color(255, 0, 0)); 
buttonBk.addActionListener(this); 
buttonCe.addActionListener(this); 
buttonC.addActionListener(this); 
panel1.add(panel2, BorderLayout.NORTH); 
panel2.setLayout(new FlowLayout(FlowLayout.RIGHT)); 
panel2.add(textMemory); 
panel2.add(labelMemSpace); 
panel2.add(buttonBk); 
panel2.add(buttonCe); 
panel2.add(buttonC); 
panel3 = new JPanel(); 
panel1.add(panel3, BorderLayout.CENTER); 
button = new JButton[10]; //define button
for (int i = 0; i < button.length; i++) { 
button[i] = new JButton(Integer.toString(i)); 
button[i].setForeground(new Color(0, 0, 255)); 
} 
buttonMC = new JButton("MC"); 
buttonMC.setForeground(new Color(255, 0, 0)); 
buttonMR = new JButton("MR"); 
buttonMR.setForeground(new Color(255, 0, 0)); 
buttonMS = new JButton("MS"); 
buttonMS.setForeground(new Color(255, 0, 0)); 
buttonMAdd = new JButton("M+"); 
buttonMAdd.setForeground(new Color(255, 0, 0)); 
buttonDot = new JButton("."); 
buttonDot.setForeground(new Color(0, 0, 255)); 
buttonAddAndSub = new JButton("+/-"); 
buttonAddAndSub.setForeground(new Color(0, 0, 255)); 
buttonAdd = new JButton("+"); 
buttonAdd.setForeground(new Color(255, 0, 0)); 
buttonSub = new JButton("-"); 
buttonSub.setForeground(new Color(255, 0, 0)); 
buttonMul = new JButton("*"); 
buttonMul.setForeground(new Color(255, 0, 0)); 
buttonDiv = new JButton("/"); 
buttonDiv.setForeground(new Color(255, 0, 0)); 
buttonMod = new JButton("%"); 
buttonMod.setForeground(new Color(0, 0, 255)); 
buttonSqrt = new JButton("sqrt"); 
buttonSqrt.setForeground(new Color(0, 0, 255)); 
buttonDao = new JButton("1/x"); 
buttonDao.setForeground(new Color(0, 0, 255)); 
buttonEqual = new JButton("="); 
buttonEqual.setForeground(new Color(255, 0, 0)); 
//将所有行为与监听绑定 
panel3.setLayout(new GridLayout(4, 6)); 
panel3.add(buttonMC); 
buttonMC.addActionListener(this); 
panel3.add(button[7]); 
button[7].addActionListener(this); 
panel3.add(button[8]); 
button[8].addActionListener(this); 
panel3.add(button[9]); 
button[9].addActionListener(this); 
panel3.add(buttonDiv); 
buttonDiv.addActionListener(this); 
panel3.add(buttonSqrt); 
buttonSqrt.addActionListener(this); 
panel3.add(buttonMR); 
buttonMR.addActionListener(this); 
panel3.add(button[4]); 
button[4].addActionListener(this); 
panel3.add(button[5]); 
button[5].addActionListener(this); 
panel3.add(button[6]); 
button[6].addActionListener(this); 
panel3.add(buttonMul); 
buttonMul.addActionListener(this); 
panel3.add(buttonMod); 
buttonMod.addActionListener(this); 
panel3.add(buttonMS); 
buttonMS.addActionListener(this); 
panel3.add(button[1]); 
button[1].addActionListener(this); 
panel3.add(button[2]); 
button[2].addActionListener(this); 
panel3.add(button[3]); 
button[3].addActionListener(this); 
panel3.add(buttonSub); 
buttonSub.addActionListener(this); 
panel3.add(buttonDao); 
buttonDao.addActionListener(this); 
panel3.add(buttonMAdd); 
buttonMAdd.addActionListener(this); 
panel3.add(button[0]); 
button[0].addActionListener(this); 
panel3.add(buttonAddAndSub); 
buttonAddAndSub.addActionListener(this); 
panel3.add(buttonDot); 
buttonDot.addActionListener(this); 
panel3.add(buttonAdd); 
buttonAdd.addActionListener(this); 
panel3.add(buttonEqual); 
buttonEqual.addActionListener(this); 
frame.setDefaultCloseOperation(frame.EXIT_ON_CLOSE); 
frame.pack(); 
frame.show(); 
} 
//设置各个按钮行为 
public void actionPerformed(ActionEvent event) { 
boolean sign = false; //判断是否是double型数参与运算,是为true,不是为false 
Object temp = event.getSource(); 
try { 
//如果按下数据按钮,将按下的按钮代表的数据插入的当前文本框字符串之后 
for (int i = 0; i <= 9; i++) 
	if (temp == button[i] && clickable == true) 
	
	
	textAnswer.setText(textAnswer.getText() + Integer.toString(i)); 
	
	if (temp == buttonDot && clickable == true)
	 { 
		boolean isDot = false; 
		if (textAnswer.getText().length() == 0) 
			isDot = true; 
		for (int i = 0; i < textAnswer.getText().length(); i++) 
				if ('.'== textAnswer.getText().charAt(i)) { 
					isDot = true; 
					break; 
				} 
    	if (isDot == false) 
		textAnswer.setText(textAnswer.getText() + '.'); 
	 } 
if ( (temp == buttonAdd || temp == buttonSub || temp == buttonMul || 
temp == buttonDiv) && clickable == true) { 
//′+′操作 
if (temp == buttonAdd) { 
switch (prekey) { 
case 0: 
answerd += Double.parseDouble(textAnswer.getText()); 
break; 
case 1: 
answerd -= Double.parseDouble(textAnswer.getText()); 
break; 
case 2: 
answerd *= Double.parseDouble(textAnswer.getText()); 
break; 
case 3: 
if (Double.parseDouble(textAnswer.getText()) == 0) { 
textAnswer.setText("除数不能为零"); 
clickable = false; 
} 
else 
answerd /= Double.parseDouble(textAnswer.getText()); 
break; 
default: 
answerd = Double.parseDouble(textAnswer.getText()); 
} 
textAnswer.setText(""); 
prekey = key = 0; 
} 
//′-′操作 
if (temp == buttonSub) { 
switch (prekey) { 
case 0: 
answerd += Double.parseDouble(textAnswer.getText()); 
break; 
case 1: 
answerd -= Double.parseDouble(textAnswer.getText()); 
break; 
case 2: 
answerd *= Double.parseDouble(textAnswer.getText()); 
break; 
case 3: 
if (Double.parseDouble(textAnswer.getText()) == 0) { 
textAnswer.setText("除数不能为零"); 
clickable = false; 
} 
else 
answerd /= Double.parseDouble(textAnswer.getText()); 
break; 
default: 
answerd = Double.parseDouble(textAnswer.getText()); 
} 
textAnswer.setText(""); 
prekey = key = 1; 
} 
//′*′操作 
if (temp == buttonMul) { 
switch (prekey) { 
case 0: 
answerd += Double.parseDouble(textAnswer.getText()); 
break; 
case 1: 
answerd -= Double.parseDouble(textAnswer.getText()); 
break; 
case 2: 
answerd *= Double.parseDouble(textAnswer.getText()); 
break; 
case 3: 
if (Double.parseDouble(textAnswer.getText()) == 0) { 
textAnswer.setText("除数不能为零"); 
clickable = false; 
} 
else 
answerd /= Double.parseDouble(textAnswer.getText()); 
break; 
default: 
answerd = Double.parseDouble(textAnswer.getText()); 
} 
textAnswer.setText(""); 
prekey = key = 2; 
} 
//′/′操作 
if (temp == buttonDiv) { 
switch (prekey) { 
case 0: 
answerd += Double.parseDouble(textAnswer.getText()); 
break; 
case 1: 
answerd -= Double.parseDouble(textAnswer.getText()); 
break; 
case 2: 
answerd *= Double.parseDouble(textAnswer.getText()); 
break; 
case 3: 
if (Double.parseDouble(textAnswer.getText()) == 0) { 
textAnswer.setText("除数不能为零"); 
clickable = false; 
} 
else 
answerd /= Double.parseDouble(textAnswer.getText()); 
break; 
default: 
answerd = Double.parseDouble(textAnswer.getText()); 
} 
textAnswer.setText(""); 
prekey = key = 3; 
} 
} 
//′=′操作 
if (temp == buttonEqual && clickable == true) { 
//如果连续按′=′,则进行连续运算
if (prekey == 5) { 
if (key == 0) { 
answerd += vard; 
textAnswer.setText(df.format(answerd)); 
} 
if (key == 1) { 
answerd -= vard; 
textAnswer.setText(df.format(answerd)); 
} 
if (key == 2) { 
answerd *= vard; 
textAnswer.setText(df.format(answerd)); 
} 
if (key == 3) { 
if (Double.parseDouble(textAnswer.getText()) == 0) { 
textAnswer.setText("除数不能为零"); 
clickable = false; 
} 
else { 
answerd /= vard; 
textAnswer.setText(df.format(answerd)); 
} 
} 
} 
else { 
vard = Double.parseDouble(textAnswer.getText()); 
if (key == 0) { 
prekey = -1; 
answerd += Double.parseDouble(textAnswer.getText()); 
textAnswer.setText(df.format(answerd)); 
} 
if (key == 1) { 
prekey = -1; 
answerd -= Double.parseDouble(textAnswer.getText()); 
textAnswer.setText(df.format(answerd)); 
} 
if (key == 2) { 
prekey = -1; 
answerd *= Double.parseDouble(textAnswer.getText()); 
textAnswer.setText(df.format(answerd)); 
} 
if (key == 3) { 
prekey = -1; 
if (Double.parseDouble(textAnswer.getText()) == 0) { 
textAnswer.setText("除数不能为零"); 
clickable = false; 
} 
else { 
answerd /= Double.parseDouble(textAnswer.getText()); 
textAnswer.setText(df.format(answerd)); 
} 
} 
} 
prekey = 5; 
} 
//′%′操作,对第二个操作数除以100 
if (temp == buttonMod && clickable == true) { 
if (answerd == 0) { 
String s = textAnswer.getText(); 
textAnswer.setText(s); 
} 
else { 
boolean isDot = false; 
for (int i = 0; i < textAnswer.getText().length(); i++) 
if ('.' == textAnswer.getText().charAt(i)) { 
isDot = true; 
break; 
} 
//如果是double数,除100 
if (isDot == true) { 
double dtemp = Double.parseDouble(textAnswer.getText()); 
dtemp = dtemp / 100.0; 
textAnswer.setText(Double.toString(dtemp)); 
} 
else { 
//如果是int数但能被100整除,则去掉末尾两个零 
if (Integer.parseInt(textAnswer.getText()) % 100 == 0) { 
int itemp = Integer.parseInt(textAnswer.getText()); 
itemp /= 100; 
textAnswer.setText(Integer.toString(itemp)); 
} 
//如果是int数,但不能被100整除,则按double数处理 
else { 
double dtemp = Double.parseDouble(textAnswer.getText()); 
dtemp = dtemp / 100.0; 
textAnswer.setText(Double.toString(dtemp)); 
} 
} 
} 
} 
//开根号运算 
if (temp == buttonSqrt && clickable == true) { 
String s = textAnswer.getText(); 
if (s.charAt(0) == '-') { 
textAnswer.setText("负数不能开根号"); 
clickable = false; 
} 
else 
textAnswer.setText(Double.toString(java.lang.Math.sqrt(Double.parseDouble(textAnswer.getText())))); 
} 
//倒数运算 
if (temp == buttonDao && clickable == true) { 
if (textAnswer.getText().charAt(0) == '0' && textAnswer.getText().length() == 1) { 
textAnswer.setText("零不能求倒数"); 
clickable = false; 
} 
else { 
boolean isDec = true; 
int i, j, k; 
String s = Double.toString(1 / Double.parseDouble(textAnswer.getText())); 
for (i = 0; i < s.length(); i++) 
if (s.charAt(i) == '.') 
break; 
for (j = i + 1; j < s.length(); j++) 
if (s.charAt(j) != '0') { 
isDec = false; 
break; 
} 
if (isDec == true) { 
String stemp = ""; 
for (k = 0; k < i; k++) 
stemp += s.charAt(k); 
textAnswer.setText(stemp); 
} 
else textAnswer.setText(s); 
} 
} 
//按下′+/-′按钮时处理 
if (temp == buttonAddAndSub && clickable == true) { 
boolean isNumber = true; 
String s = textAnswer.getText(); 
for (int i = 0; i < s.length(); i++) 
if (! (s.charAt(i) >= '0' && s.charAt(i) <= '9' || s.charAt(i) == '.' || s.charAt(i) == '-')) 
{ 
isNumber = false; 
break; 
} 
if (isNumber == true) { 
//如果当前字符串首字母有′-′号,代表现在是个负数,再按下时,则将首符号去掉 
if (s.charAt(0) == '-') { 
textAnswer.setText(""); 
for (int i = 1; i < s.length(); i++) { 
char a = s.charAt(i); 
textAnswer.setText(textAnswer.getText() + a); 
} 
} 
//如果当前字符串第一个字符不是符号,则添加一个符号在首字母处 
else textAnswer.setText( '-' + s); 
} 
} 
//计算器有关内存操作 
//′MC′的操作,将内存清0 //
if (temp == buttonMC && clickable == true) { 
memoryd = memoryi = 0; 
textMemory.setText(""); 
} 
//′MS′的操作,将当前文本框内容保存入内存,显示′M′ 
if (temp == buttonMS && clickable == true) { 
boolean isDot = false; 
textMemory.setText(" M"); 
for (int i = 0; i < textAnswer.getText().length(); i++) 
if ('.' == textAnswer.getText().charAt(i)) { 
isDot = true; 
break; 
} 
//如果是double,则存入memoryd(double存储器) 
if (isDot == true) { 
memoryd = Double.parseDouble(textAnswer.getText()); 
memoryi = 0; //保证存储器中存放最新的值 
} 
//如果是int,则存入memoryi(int存储器) 
else { 
      memoryi = Integer.parseInt(textAnswer.getText()); 
      memoryd = 0; //保证存储器中存放最新的值 
     } 
} 
//′MR′的操作,将存储器中的信息输出 
if (temp == buttonMR && clickable == true) { 
if (memoryd != 0) 
textAnswer.setText(Double.toString(memoryd)); 
if (memoryi != 0) 
textAnswer.setText(Integer.toString(memoryi)); 
} 
//′M+′的功能,将当前文本框里的数据和存储器中数据相加后,再存入存储器 
if (temp == buttonMAdd && clickable == true) { 
boolean isDot = false; 
for (int i = 0; i < textAnswer.getText().length(); i++) 
if ('.'== textAnswer.getText().charAt(i)) { 
isDot = true; 
break; 
} 
if (memoryi!= 0) { //存储中是一个int型数 
if (isDot == false) //被加数是一个int型数 
memoryi += Integer.parseInt(textAnswer.getText()); 
else { //被加数是一个double型数,则将int存储器中数传入double存储器与当前数相加,int存储器清零 
memoryd = memoryi + Double.parseDouble(textAnswer.getText()); 
memoryi = 0; 
} 
} 
else 
memoryd+=Double.parseDouble(textAnswer.getText()); 
} 
//按下′Backspace′键,利用循环将当前字符串中的最后一个字母删除 
if (temp == buttonBk && clickable == true) { 
String s = textAnswer.getText(); 
textAnswer.setText(""); 
for (int i = 0; i < s.length() - 1; i++) { 
char a = s.charAt(i); 
textAnswer.setText(textAnswer.getText() + a); 
} 
} 
//按下′CE′按钮,将当前文本框内数据清除 
if (temp == buttonCe) { 
textAnswer.setText(""); 
clickable = true; 
} 
//按下′C′按钮,文本框内数据清除,同时var,answer清0 
if (temp == buttonC) { 
vard = answerd = 0; 
textAnswer.setText(""); 
clickable = true; 
} 
//按下′复制′菜单栏 
if (temp == copyItem) { 
copy = textAnswer.getText(); 
} 
//按下′粘贴′菜单栏 
if (temp == pasteItem) { 
textAnswer.setText(copy); 
} 
if (temp == sItem) { 
ans8 calcu=new ans8();
calcu.ning();
frame.dispose();
} 
//按下′帮助主题′菜单栏 
if (temp == topHelp) { 
JOptionPane.showMessageDialog(panel, scrollHelp); 
} 
//按下′数字分组′菜单栏 
if (temp == numberGroup) { 
if (numberGroup.getText().compareTo(" 数字分组(I)") == 0) 
numberGroup.setText("√数字分组(I)"); 
else 
numberGroup.setText(" 数字分组(I)"); 
} 
//按下′关于′菜单栏 
if (temp == aboutCal) { 
JOptionPane.showMessageDialog(panel, "Are you OK??"); 
} 
} 
//输入中如果有操作非法,比如按下两次′+′,捕获异常 
catch (Exception e) { 
textAnswer.setText("操作非法"); 
clickable = false; 
} 
} 
} 
 


评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值