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

📄 caculator.java

📁 java科学计算器源码,供大家参考
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
			t_show.setText(t[state]);
		}
		else if(e.getSource() == b_C)//删掉所有状态与数值
		{
			for (int i=0;i<11;i++)
			{
				t[i]="0";
				d[i]=0;
				if (i<5)
					marks[i]=0;
			}
			state=1;
			start=0;
			mark=1;
			t_show.setText("0");
			k1=k2=0;
			t_K.setText(" — ");
		}
		else if(e.getSource() == b_CE)//删除当前状态与数值
		{
			clear();
			t_show.setText("0");
		}

		//储存器操作按钮事件########################################
		else if(e.getSource() == b_MC)
		{
			Mdate=0;
			t_M.setText(" — ");
			validate();
		}
		else if(e.getSource() == b_MR)
		{
			d[state]=Mdate;
			t[state]=String.valueOf(Mdate);
			t_show.setText(String.valueOf(Mdate));
		}
		else if(e.getSource() == b_MS)
		{
			start=0;//说明重新输入,清空以前数据
			Mdate=Double.parseDouble(t_show.getText());
			t_M.setText(" M  ");
			validate();
		}
		else if(e.getSource() == b_Madd)
		{
			Mdate+=Double.parseDouble(t_show.getText());
			t_M.setText(" M  ");
			validate();

		}

		//数字按钮事件###########################################
		else if(e.getSource() == b_0)
		{
			input("0");
		}
		else if(e.getSource() == b_1)
		{
			input("1");
		}
		else if(e.getSource() == b_2)
		{
			input("2");
		}
		else if(e.getSource() == b_3)
		{
			input("3");
		}
		else if(e.getSource() == b_4)
		{
			input("4");
		}
		else if(e.getSource() == b_5)
		{
			input("5");
		}
		else if(e.getSource() == b_6)
		{
			input("6");
		}
		else if(e.getSource() == b_7)
		{
			input("7");
		}
		else if(e.getSource() == b_8)
		{
			input("8");
		}
		else if(e.getSource() == b_9)
		{
			input("9");
		}
		else if(e.getSource() == b_dian)
		{
			input(".");
		}

		//四则运算操作事件########################################
		else if(e.getSource() == b_add)
		{
			if(deng==0)//如果已经有2个数和1个运算符,则先把它算出来
			{
				done();
			}
			marks[mark]=1;//加
	        start=0;
		    state=mark*2;
			deng=0;
			
		}
		else if(e.getSource() == b_sub)
		{
			if(deng==0)//如果已经有2个数和1个运算符,则先把它算出来
			{
				done();
			}
			marks[mark]=2;//减
	        start=0;
		    state=mark*2;
			deng=0;
		}
		else if(e.getSource() == b_mul)
		{
			if(deng==0)//如果已经有2个数和1个运算符,则先把它算出来
			{
				done();
			}
			marks[mark]=3;//乘
	        start=0;
		    state=mark*2;
			deng=0;
		}
		else if(e.getSource() == b_div)
		{
			if(deng==0)//如果已经有2个数和1个运算符,则先把它算出来
			{
				done();
			}
			marks[mark]=4;//除
	        start=0;
		    state=mark*2;
			deng=0;
		}

		//输出结果事件###########################################
		else if(e.getSource() == b_deng)//按'='时
		{
			done();//四则运算函数
		}

		//其他操作运算符事件#######################################
		else if(e.getSource() == b_sqrt)
		{
			d[state]=Math.sqrt(d[state]);
			t[state]=String.valueOf(d[state]);
			t_show.setText(t[state]);
		}
		else if(e.getSource() == b_dao)//按'1/x'时
		{
			d[state]=1/d[state];
			t[state]=String.valueOf(d[state]);
			t_show.setText(t[state]);
		}
		else if(e.getSource() == b_sign)//按'+/-'时
		{
			if (d[state]<0) 
			{
				t[state] = t[state].substring(1, t[state].length());
			}
			else 
			{
				t[state] = "-"+t[state];
			}
			t_show.setText(t[state]);
			d[state] = Double.parseDouble(t[state]);
		}
		else if(e.getSource() == b_100)//按'%'时
		{
			if(state==1||state==3)
			{
				t[1]="0";
			    d[1]=0;
			    start=0;
				t_show.setText("0");
			}
			else
			{
				d[state]=d[state]*d[state-1]/100.0;
				t[state]=String.valueOf(d[state]);
				t_show.setText(t[state]);
			}
		}
		//科学运算符###########################################
		else if(e.getSource() == b_pi)//按π时
		{
			clear();//清除当前
			input("3.1415926535897932384626433832795");
		}
		else if(e.getSource() == b_k1)//按(时
		{
			if(k1==5)
			{
				JOptionPane.showMessageDialog(this,"对不起!括号最多可使用5次!","警告提示",JOptionPane.WARNING_MESSAGE);
			}
			else
			{
		    	clear();//清除当前
		    	t_show.setText("(");
		    	k1++;
		    	mark=k1+1;
		    	state=2*mark-1;
		    	t_K.setText("(="+String.valueOf(k1));
			}
		}
		else if(e.getSource() == b_k2)//按)时
		{
			if (k1 == 0)
			{
				t_show.setText("error!");
				start=0;
			}
			else
			{
				if(deng == 0)//如果已经有2个数和1个运算符,则先把它算出来
				{
		    		done();
					deng=0;
				}
	    		deng=0;
				k1--;
				k2++;
				d[2*(mark-1)]=d[2*mark-1];
				t[2*(mark-1)]=t[2*mark-1];
				d[2*mark-1]=d[2*mark]=0;
				t[2*mark-1]=t[2*mark]="0";
				marks[mark]=0;
				mark=k1+1;
				state=2*mark;
				if (k1==0)
					t_K.setText(" — ");
				else
					t_K.setText("(="+String.valueOf(k1));
			}
		}
		else if(e.getSource() == b_x2)//按x^2时
		{
			d[state]=d[state]*d[state];
			t[state]=String.valueOf(d[state]);
			t_show.setText(t[state]);
		}
		else if(e.getSource() == b_x3)//按x^3时
		{
			d[state]=d[state]*d[state]*d[state];
			t[state]=String.valueOf(d[state]);
			t_show.setText(t[state]);
		}
		else if(e.getSource() == b_xy)//按x^y时
		{
			if(deng==0)//如果已经有2个数和1个运算符,则先把它算出来
			{
				done();
			}
			marks[mark]=5;//x^y
	        start=0;
		    state=mark*2;
			deng=0;
		}
		else if(e.getSource() == b_n)//按n!时
		{
			t[state]=n(t[state]);
			d[state]=Double.parseDouble(t[state]);
			t[state]=String.valueOf(d[state]);
			t_show.setText(t[state]);
		}
		else if(e.getSource() == b_ln)//按ln时
		{
			d[state]=Math.log(d[state]);
			t[state]=String.valueOf(d[state]);
			t_show.setText(t[state]);
		}
		else if(e.getSource() == b_log)//按log时
		{
			d[state]=Math.log(d[state])/Math.log(10);
			t[state]=String.valueOf(d[state]);
			t_show.setText(t[state]);
		}
		else if(e.getSource() == b_sin)//按sin时
		{
			if (radio==1)
				d[state]=Math.sin(d[state]/180*pi);
			else
				d[state]=Math.sin(d[state]);
			d[state]=op(d[state]);//精化结果
			t[state]=String.valueOf(d[state]);
			t_show.setText(t[state]);
		}
		else if(e.getSource() == b_cos)//按cos时
		{
			if (radio==1)
				d[state]=Math.cos(d[state]/180*pi);
			else
				d[state]=Math.cos(d[state]);
			d[state]=op(d[state]);//精化结果
			t[state]=String.valueOf(d[state]);
			t_show.setText(t[state]);
		}
		else if(e.getSource() == b_tan)//按tan时
		{
			if (radio==1)
				d[state]=Math.tan(d[state]/180*pi);
			else
				d[state]=Math.tan(d[state]);
			d[state]=op(d[state]);//精化结果
			t[state]=String.valueOf(d[state]);
			t_show.setText(t[state]);
		}
	}

	public void keyPressed(KeyEvent e)
	{
		if(e.getKeyCode()==KeyEvent.VK_0 ||e.getKeyCode()==KeyEvent.VK_NUMPAD0)
		{
			input("0");
		}
		else if(e.getKeyCode()==KeyEvent.VK_1||e.getKeyCode()==KeyEvent.VK_NUMPAD1)
		{
			input("1");
		}
		else if(e.getKeyCode()==KeyEvent.VK_2||e.getKeyCode()==KeyEvent.VK_NUMPAD2)
		{
			input("2");
		}
		else if(e.getKeyCode()==KeyEvent.VK_3||e.getKeyCode()==KeyEvent.VK_NUMPAD3)
		{
			input("3");
		}
		else if(e.getKeyCode()==KeyEvent.VK_4||e.getKeyCode()==KeyEvent.VK_NUMPAD4)
		{
			input("4");
		}
		else if(e.getKeyCode()==KeyEvent.VK_5||e.getKeyCode()==KeyEvent.VK_NUMPAD5)
		{
			input("5");
		}
		else if(e.getKeyCode()==KeyEvent.VK_6||e.getKeyCode()==KeyEvent.VK_NUMPAD6)
		{
			input("6");
		}
		else if(e.getKeyCode()==KeyEvent.VK_7||e.getKeyCode()==KeyEvent.VK_NUMPAD7)
		{
			input("7");
		}
		else if(e.getKeyCode()==KeyEvent.VK_8||e.getKeyCode()==KeyEvent.VK_NUMPAD8)
		{
			input("8");
		}
		else if(e.getKeyCode()==KeyEvent.VK_9||e.getKeyCode()==KeyEvent.VK_NUMPAD9)
		{
			input("9");
		}
		else if(e.getKeyCode()==KeyEvent.VK_PERIOD)
		{
			input(".");
		}
	}
	public void keyTyped(KeyEvent e)
	{
	}
	public void keyReleased(KeyEvent e)
	{
	}
	public void itemStateChanged(ItemEvent e)
	{
		if(e.getSource()==j)
		{
			radio=1;
		}
		else
		{
			radio=2;
		}
	}
}
//***************---------[对话框类]---------****************
class Dialog extends JDialog
{
	JTextArea b;
	Dialog(JFrame j,String s1,String s2,int x,int y)
	{
		super(j,s1,true);
		setBounds(200,200,x,y);
		setResizable(false);
		Container con=getContentPane();
		b = new JTextArea();
		b.setBounds(20,20,x-40,y-30);
		b.setLineWrap(true);
		b.setText(s2);
		b.setEditable(false);
		con.setLayout(new FlowLayout());
		con.add(b);
		validate();
		setVisible(true);
	}
}
	

//***************----------Main()------------****************
class caculator
{
	public static void main(String args[])
	{
		Window win = new Window("标准型计算器",1);
	}
}

⌨️ 快捷键说明

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