⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 calculator.java

📁 java 写的计算器程序
💻 JAVA
📖 第 1 页 / 共 5 页
字号:
		btnMultiply.addActionListener(new ActionListener(){
			public void actionPerformed(ActionEvent e) {
				if(viewMenu_standarType.isSelected()){
					setOperatorForStandar(e);
				}
				else{
					setOperatorForScience(e);
				}
			}    			
		});
		
		//创建-按钮
		btnMinus=new JButton("-");
		btnMinus.setForeground(Color.RED);
		btnMinus.setMargin(new Insets(0,1,2,1));
		container.add(btnMinus);
		btnMinus.addActionListener(new ActionListener(){
			public void actionPerformed(ActionEvent e) {
				if(viewMenu_standarType.isSelected()){
					setOperatorForStandar(e);
				}
				else{
					setOperatorForScience(e);
				}
			}    			
		});
		
		
		//创建+按钮
		btnPlus=new JButton("+");
		btnPlus.setForeground(Color.RED);
		btnPlus.setMargin(new Insets(0,1,2,1));
		container.add(btnPlus);
		btnPlus.addActionListener(new ActionListener(){
			public void actionPerformed(ActionEvent e) {
				if(viewMenu_standarType.isSelected()){
					setOperatorForStandar(e);
				}
				else{
					setOperatorForScience(e);
				}
			}  		
		});
		
		//创建=按钮
		btnEqualSign=new JButton("=");
		btnEqualSign.setForeground(Color.RED);
		btnEqualSign.setMargin(new Insets(0,1,2,1));
		container.add(btnEqualSign);
		btnEqualSign.addActionListener(new ActionListener(){
			public void actionPerformed(ActionEvent e) {	
				if(isError==true||(isOperandBegin&&command.equals("="))){
					return;
				}
								
				if(viewMenu_scienceType.isSelected()){
					if(lbracketNum>0){
						//必须补全右括弧方可进行整个式子的计算
						return;
					}
					setOperatorForScience(e);
					return;
				}
				
				String tempStr=getPlainStr(displayField.getText());
				
				if(isFirstEqual){							
					secondOperand=tempStr;
					calculateStandar(tempStr);
					isOperandBegin=true;
					isFirstEqual=false;						
				}
				else
				{
					calculateStandar(secondOperand);
					isOperandBegin=true;
				}
				isFirstOprator=true;
				isDot=false;
				canExp=false;
				cbInv.setSelected(false);
				cbHyp.setSelected(false);
			}
			
		});
		
		//创建sqrt按钮
		btnSqrt=new JButton("sqrt");
		btnSqrt.setForeground(Color.BLUE);
		btnSqrt.setMargin(new Insets(0,1,2,1));
		container.add(btnSqrt);
		btnSqrt.addActionListener(new ActionListener(){
			public void actionPerformed(ActionEvent e) {
				if(isError==true){
					return;
				}
				
				String tempStr=displayField.getText();
				tempStr=tempStr.replace(",","");				
				
				if(viewMenu_numberGrouping.isSelected()){
					decimalismFormat.setGroupingUsed(true);						
				}
				else{
					decimalismFormat.setGroupingUsed(false);
				}		
				
				double num=0;				
				try{
					num=java.lang.Double.parseDouble(tempStr);
					if(num>=0){
						decimalismFormat.setMaximumFractionDigits(31);
						displayField.setText(decimalismFormat.format(Math.sqrt(num)));
					}
					else{
						displayField.setText("函数输入无效。");
						isError=true;
					}
				}
				catch(NumberFormatException nfe){					
				}
				
				isDot=false;
				isOperandBegin=true;
			}  			
		});
		
		
		//创建%按钮
		btnPercent=new JButton("%");
		btnPercent.setForeground(Color.BLUE);
		btnPercent.setMargin(new Insets(0,1,2,1));
		container.add(btnPercent);
		btnPercent.addActionListener(new ActionListener(){
			public void actionPerformed(ActionEvent arg0) {
				if(isError==true){
					return;
				}
				
				try{
					
					String displayStr=displayField.getText();
					
					DecimalFormat df=new DecimalFormat();
					Object obj=df.parse(displayStr);
					
					BigDecimal bd=new BigDecimal(obj.toString());
					String tempStr=Arith.div(bd.toString(),"100").toString();
					displayField.setText(decimalismFormat.format(Arith.mul(result,tempStr)));						
					
				}
				catch(NumberFormatException e){					
				} 
				catch (ParseException pe) {
					pe.printStackTrace();
				}
				
				isDot=false;
				isOperandBegin=true;				
			}
			
		});
		
		
		//创建1/x按钮
		btnReciprocal=new JButton("1/x");
		btnReciprocal.setMargin(new Insets(0,1,2,1));
		container.add(btnReciprocal);
		btnReciprocal.addActionListener(new ActionListener(){
			public void actionPerformed(ActionEvent arg0) {
				if(isError==true){
					return;
				}				
				
				try{
					String displayStr=displayField.getText();
					double num=Double.parseDouble(displayStr);
					
					if(!viewMenu_numberGrouping.isSelected()){
						decimalismFormat.setGroupingUsed(false);						
					}
					else{
						decimalismFormat.setGroupingUsed(true);
					}	
					
					if(num!=0){						
						
						BigDecimal bd;
						if(isFirstReciprocal==true){
							bd=Arith.div("1",displayStr.replace(",",""));
							bottomNum=bd.toString();
							isFirstReciprocal=false;
						}else{
							bd=Arith.div("1",bottomNum);
							isFirstReciprocal=true;
						}
						
						
						if(bd.toString().length()>=31){
							
							displayField.setText(new DecimalFormat("0.###############################E0").format(bd));	
							
							String testStr=displayField.getText();
							String strscale=testStr.substring(testStr.indexOf("E")+1,testStr.length());
							int scale=Integer.parseInt(strscale);
							if(scale>=-32&&scale<31){
								displayField.setText(decimalismFormat.format(bd));
							}
							isOperandBegin=true;
							return;
						}
						
						displayField.setText(decimalismFormat.format(bd));
					}
					else{
						displayField.setText("除数不能为0。");
						isError=true;					
					}	
				}
				catch(NumberFormatException nfe){
				}
				
				isOperandBegin=true;
				isDot=false;									
			}
		});
		
		
		
		//创建pi按钮
		btnPI=new JButton("pi");
		btnPI.setForeground(Color.BLUE);
		btnPI.setMargin(new Insets(0,1,2,1));
		container.add(btnPI);
		btnPI.addActionListener(new ActionListener(){
			
			public void actionPerformed(ActionEvent arg0) {
				if(isError==true){
					return;
				}
				if(cbInv.isSelected()==true){
					displayField.setText(2*Math.PI+"");
					cbInv.setSelected(false);
				}
				else{
					displayField.setText(Math.PI+"");
				}
				
				isOperandBegin=true;
				isDot=true;
			}
		});
		
		
		
		//创建Mod按钮
		btnMod=new JButton("Mod");
		btnMod.setForeground(Color.RED);
		btnMod.setMargin(new Insets(0,1,2,1));
		container.add(btnMod);
		btnMod.addActionListener(new ActionListener(){
			public void actionPerformed(ActionEvent e) {
				if(viewMenu_standarType.isSelected()){
					setOperatorForStandar(e);
				}
				else{
					setOperatorForScience(e);
				}
			}  		
		});
		
		//创建Or按钮
		btnOr=new JButton("Or");
		btnOr.setForeground(Color.RED);
		btnOr.setMargin(new Insets(0,1,2,1));
		container.add(btnOr);
		btnOr.addActionListener(new ActionListener(){
			public void actionPerformed(ActionEvent e) {
				if(viewMenu_standarType.isSelected()){
					setOperatorForStandar(e);
				}
				else{
					setOperatorForScience(e);
				}
			}  		
		});
		
		//创建Lsh按钮
		btnLsh=new JButton("Lsh");
		btnLsh.setForeground(Color.RED);
		btnLsh.setMargin(new Insets(0,1,2,1));
		container.add(btnLsh);
		btnLsh.addActionListener(new ActionListener(){
			public void actionPerformed(ActionEvent e) {
				if(viewMenu_standarType.isSelected()){
					setOperatorForStandar(e);
				}
				else{
					setOperatorForScience(e);
				}
			}  		
		});
		
		//创建And按钮
		btnAnd=new JButton("And");
		btnAnd.setForeground(Color.RED);
		btnAnd.setMargin(new Insets(0,1,2,1));
		container.add(btnAnd);
		btnAnd.addActionListener(new ActionListener(){
			public void actionPerformed(ActionEvent e) {
				if(viewMenu_standarType.isSelected()){
					setOperatorForStandar(e);
				}
				else{
					setOperatorForScience(e);
				}
			}  		
		});
		
		//创建Xor按钮
		btnXor=new JButton("Xor");
		btnXor.setForeground(Color.RED);
		btnXor.setMargin(new Insets(0,1,2,1));
		container.add(btnXor);
		btnXor.addActionListener(new ActionListener(){
			public void actionPerformed(ActionEvent e) {
				if(viewMenu_standarType.isSelected()){
					setOperatorForStandar(e);
				}
				else{
					setOperatorForScience(e);
				}
			}  		
		});
		
		//创建Not按钮
		btnNot=new JButton("Not");
		btnNot.setForeground(Color.RED);
		btnNot.setMargin(new Insets(0,1,2,1));
		container.add(btnNot);
		btnNot.addActionListener(new ActionListener(){
			
			public void actionPerformed(ActionEvent arg0) {
				if(isError){
					return;
				}
				String str=displayField.getText();
				str=str.replace(",","");
				if(str.indexOf(".")!=-1){
					str=str.substring(0,str.indexOf("."));	
				}
				
				if(rbHexadecimal.isSelected()){
					str=CarryConvert.todec(str,16).toString();
				}
				else if(rbOctal.isSelected()){
					str=CarryConvert.todec(str,8).toString();
				}
				else if(rbBinary.isSelected()){
					str=CarryConvert.todec(str,2).toString();
				}
				
				try{
					int num=Integer.parseInt(str);
					num=~num;//进行取反操作
					setGroupingState();
					
					if(rbHexadecimal.isSelected()){
						str=Integer.toHexString(num);
					}
					else if(rbOctal.isSelected()){
						str=Integer.toOctalString(num);
					}
					else if(rbBinary.isSelected()){
						str=Integer.toBinaryString(num);
					}
					else{
						str=num+"";
					}
					displayField.setText(str);
					isOperandBegin=true;
					isDot=false;
				}
				catch(NumberFormatException nfe){
					JOptionPane.showMessageDialog(null,"对不起,该数值已超出本计算器的计算范围!计算中止!","提示",JOptionPane.ERROR_MESSAGE);
					displayField.setText("计算操作中止。");
					isError=true;
					return;
				}			
			}
			
		});
		
		//创建Int按钮
		btnInt=new JButton("Int");
		btnInt.setForeground(Color.RED);
		btnInt.setMargin(new Insets(0,1,2,1));
		container.add(btnInt);
		btnInt.addActionListener(new ActionListener(){
			
			public void actionPerformed(ActionEvent arg0) {
				// TODO 自动生成方法存根
				if(isError){
					return;
				}
				String str=displayField.getText();
				str=str.replace(",","");
				double num=Double.parseDouble(str);
				
				if(cbInv.isSelected()){
					displayField.setText((num-Math.floor(num))+"");					
					cbInv.setSelected(false);
				}else{
					displayField.setText(Math.floor(num)+"");
				}
				isOperandBegin=true;
				isDot=false;
			}
			
		});
		
		//改变标题栏窗口左侧默认图标	
		Toolkit tk=Toolkit.getDefaultToolkit();     
		Image   image=tk.createImage("icons/calculator.png");		   
		this.setIconImage(image);
		
		
		//创建统计框
		dlgStatistic=new JFrame("统计框");
		dlgStatistic.setSize(227,163);
		dlgStatistic.setLocationRelativeTo(this);  
		dlgStatistic.addWindowListener(new WindowAdapter(){
			public void windowClosing(WindowEvent e){
				//清空JList里的内容
				vecListData.removeAllElements();
				btnAve.setEnabled(false);
				btnSum.setEnabled(false);
				btnS.setEnabled(false);
				btnDat.setEnabled(false);
				dlgStatistic.setVisible(false);
			}
		});
		dlgcon=dlgStatistic.getContentPane();  	
		dlgcon.setLayout(null);
		
		//创建数据显示列表 
		vecListData=new Vector();
		
		datalist=new JList(vecListData);
		datalist.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
		datalist.setVisibleRowCount(

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -