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

📄 calculator.java

📁 简单的java计算器程序
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
														}
													  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) 
					  {
							JOptionPane.showMessageDialog(panel, "当前是标准型计算器,\n科学型计算器有待更新。");
					   }
				  //按下'帮助主题'菜单栏
				  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, "计算器1.00版\n开发者:楼竞");
						}
			
		 }
		 }
			//输入中如果有操作非法,比如按下两次'+',捕获异常
			catch (Exception e) 
				{
					  textAnswer.setText("操作非法");
					  clickable = false;
				}
		}	
				class closeWin extends WindowAdapter		//关闭窗口
						{		public void windowClosing(WindowEvent e)
							{
									Frame frm=(Frame)(e.getSource());
								frm.dispose();
									System.exit(0);
						    }
 		               }
}		


⌨️ 快捷键说明

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