📄 caculator_未解决十进制以外的数值输入和计算问题.java
字号:
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)//按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 + -