📄 caculator.java
字号:
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 + -