科学计算器源代码.docx
《科学计算器源代码.docx》由会员分享,可在线阅读,更多相关《科学计算器源代码.docx(21页珍藏版)》请在冰点文库上搜索。
![科学计算器源代码.docx](https://file1.bingdoc.com/fileroot1/2023-5/8/2a6bf610-412e-4ae9-89aa-1e57c0bfabcb/2a6bf610-412e-4ae9-89aa-1e57c0bfabcb1.gif)
科学计算器源代码
packagetwo;
importjava.awt.*;
importjavax.swing.*;
importjava.awt.event.*;
importjava.io.*;
importjava.util.*;
publicclasscalculatorimplementsActionListener{
intcount=0;
privatestaticinta;
JFrameframe=newJFrame("计算器");
JTextAreaarea=newJTextArea();
JTextFieldfieldshow=newJTextField("0");
JTextFieldfieldcalculator=newJTextField();
JPanelleftpanel=newJPanel();
JPanelrightpanel=newJPanel();
JPanelbuttonpanel=newJPanel();
JPanelmotionpanel=newJPanel();
JButtonbutton1=newJButton("1");
JButtonbutton2=newJButton("2");
JButtonbutton3=newJButton("3");
JButtonbutton4=newJButton("+");
JButtonbutton5=newJButton("c");
JButtonbutton6=newJButton("4");
JButtonbutton7=newJButton("5");
JButtonbutton8=newJButton("6");
JButtonbutton9=newJButton("-");
JButtonbutton10=newJButton("退格");
JButtonbutton11=newJButton("7");
JButtonbutton12=newJButton("8");
JButtonbutton13=newJButton("9");
JButtonbutton14=newJButton("*");
JButtonbutton15=newJButton("sin");
JButtonbutton16=newJButton("0");
JButtonbutton17=newJButton("+/-");
JButtonbutton18=newJButton(".");
JButtonbutton19=newJButton("/");
JButtonbutton20=newJButton("=");
JButtonbutton21=newJButton("保存");
JButtonbutton22=newJButton("复制");
JButtonbutton23=newJButton("清除");
StringBufferS=newStringBuffer("");
//t用来记录前一个运算符号是+-*/=中的哪一个
chart;
//count用来实现运算符号计数,a用来识别退格、正负号操作前一个操作是否是运算符号+-*/sin=
//intcount=0,a=0;
Doublex1,x2=0d,result;
publicstaticvoidmain(Stringa[]){
calculatorthat=newcalculator();
that.go();
}
voidgo(){
leftpanel.setLayout(newBorderLayout());
leftpanel.add(fieldshow,BorderLayout.NORTH);
leftpanel.add(buttonpanel,BorderLayout.CENTER);
buttonpanel.setLayout(newGridLayout(4,5));
buttonpanel.add(button1);
buttonpanel.add(button2);
buttonpanel.add(button3);
buttonpanel.add(button4);
buttonpanel.add(button5);
buttonpanel.add(button6);
buttonpanel.add(button7);
buttonpanel.add(button8);
buttonpanel.add(button9);
buttonpanel.add(button10);
buttonpanel.add(button11);
buttonpanel.add(button12);
buttonpanel.add(button13);
buttonpanel.add(button14);
buttonpanel.add(button15);
buttonpanel.add(button16);
buttonpanel.add(button17);
buttonpanel.add(button18);
buttonpanel.add(button19);
buttonpanel.add(button20);
button1.addActionListener(this);//事件监听
button2.addActionListener(this);
button3.addActionListener(this);
button4.addActionListener(this);
button5.addActionListener(this);
button6.addActionListener(this);
button7.addActionListener(this);
button8.addActionListener(this);
button9.addActionListener(this);
button10.addActionListener(this);
button11.addActionListener(this);
button12.addActionListener(this);
button13.addActionListener(this);
button14.addActionListener(this);
button15.addActionListener(this);
button16.addActionListener(this);
button17.addActionListener(this);
button18.addActionListener(this);
button19.addActionListener(this);
button20.addActionListener(this);
button21.addActionListener(this);
button22.addActionListener(this);
button23.addActionListener(this);
rightpanel.setLayout(newBorderLayout());
rightpanel.add(fieldcalculator,BorderLayout.NORTH);
rightpanel.add(area,BorderLayout.CENTER);
rightpanel.add(motionpanel,BorderLayout.SOUTH);
motionpanel.add(button21);
motionpanel.add(button22);
motionpanel.add(button23);
Containercon=frame.getContentPane();
frame.setLayout(newGridLayout(1,2));
con.add(leftpanel);
con.add(rightpanel);
frame.setBounds(200,200,600,300);
frame.setVisible(true);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.addWindowListener(newWindowListener(){//关闭程序时弹出警告
publicvoidwindowClosing(WindowEvente){
intresult=JOptionPane.showConfirmDialog(frame,"确实要关闭程序吗?
",
"警告",JOptionPane.OK_CANCEL_OPTION);
if(result==JOptionPane.OK_CANCEL_OPTION){
System.exit(0);
}else{
}
}
publicvoidwindowOpened(WindowEvente){}
publicvoidwindowIconified(WindowEvente){}
publicvoidwindowDeiconified(WindowEvente){}
publicvoidwindowDeactivated(WindowEvente){}
publicvoidwindowClosed(WindowEvente){}
publicvoidwindowActivated(WindowEvente){}
});
}
publicvoidactionPerformed(ActionEvente){
//0123456789等按钮
if(e.getSource()==button1||e.getSource()==button2
||e.getSource()==button3||e.getSource()==button6
||e.getSource()==button7||e.getSource()==button8
||e.getSource()==button11||e.getSource()==button12
||e.getSource()==button13||e.getSource()==button16){
a=0;
if(count==0){
S.append(e.getActionCommand());
fieldshow.setText(S.toString());
x1=Double.parseDouble(fieldshow.getText());
}elseif(count>=1){
S.append(e.getActionCommand());
fieldshow.setText(S.toString());
x2=Double.parseDouble(fieldshow.getText());
}
}
//小数点的容错性
if(e.getSource()==button18)//单击"."按钮输入小数
{
a=0;
if(fieldshow.getText().trim().indexOf(".")!
=-1)//判断字符串中是否已经包含了小数点
{
}else//如果没有小数点
{
if(fieldshow.getText().trim().equals("0"))//如果初时显示为0
{
S.setLength(0);
fieldshow.setText((S.append("0"+e.getActionCommand()))
.toString());
}elseif(fieldshow.getText().trim().equals(""))//如果初时显示为空则不做任何操作
{
}else{
fieldshow
.setText(S.append(e.getActionCommand()).toString());
}
}
}
//运算符号+-*/
if(e.getSource()==button4||e.getSource()==button9
||e.getSource()==button14||e.getSource()==button19){
count++;
a=1;
S.setLength(0);
if(e.getSource()==button4)//+法
{
switch(t){
case'+':
result=x1+x2;
fieldshow.setText(result.toString());
fieldcalculator.setText(x1+"+"+x2+"="+result);
area.append(x1+"+"+x2+"="+result+"\n");
break;
case'-':
result=x1-x2;
fieldshow.setText(result.toString());
fieldcalculator.setText(x1+"+"+x2+"="+result);
area.append(x1+"-"+x2+"="+result+"\n");
break;
case'*':
result=x1*x2;
fieldshow.setText(result.toString());
fieldcalculator.setText(x1+"+"+x2+"="+result);
area.append(x1+"*"+x2+"="+result+"\n");
break;
case'/':
if(x2==0)
fieldshow.setText("除数不能为零");
else{
result=x1/x2;
fieldshow.setText(result.toString());
fieldcalculator.setText(x1+"+"+x2+"="+result);
area.append(x1+"/"+x2+"="+result+"\n");
}
break;
case'=':
default:
}
if(count<=1){
}elseif(count>=2){
x1=result;
}
t='+';
}
if(e.getSource()==button9)//-法
{
switch(t){
case'+':
result=x1+x2;
fieldshow.setText(result.toString());
fieldcalculator.setText(x1+"+"+x2+"="+result);
area.append(x1+"+"+x2+"="+result+"\n");
break;
case'-':
result=x1-x2;
fieldshow.setText(result.toString());
fieldcalculator.setText(x1+"-"+x2+"="+result);
area.append(x1+"-"+x2+"="+result+"\n");
break;
case'*':
result=x1*x2;
fieldshow.setText(result.toString());
fieldcalculator.setText(x1+"*"+x2+"="+result);
area.append(x1+"*"+x2+"="+result+"\n");
break;
case'/':
if(x2==0)
fieldshow.setText("除数不能为零");
else{
result=x1/x2;
fieldshow.setText(result.toString());
fieldcalculator.setText(x1+"/"+x2+"="+result);
area.append(x1+"/"+x2+"="+result+"\n");
}
break;
case'=':
default:
}
if(count<=1){
}elseif(count>=2){
x1=result;
}
t='-';
}
if(e.getSource()==button14)//*法
{
switch(t){
case'+':
result=x1+x2;
fieldshow.setText(result.toString());
fieldcalculator.setText(x1+"+"+x2+"="+result);
area.append(x1+"+"+x2+"="+result+"\n");
break;
case'-':
result=x1-x2;
fieldshow.setText(result.toString());
fieldcalculator.setText(x1+"-"+x2+"="+result);
area.append(x1+"-"+x2+"="+result+"\n");
break;
case'*':
result=x1*x2;
fieldshow.setText(result.toString());
fieldcalculator.setText(x1+"*"+x2+"="+result);
area.append(x1+"*"+x2+"="+result+"\n");
break;
case'/':
if(x2==0)
fieldshow.setText("除数不能为零");
else{
result=x1/x2;
fieldshow.setText(result.toString());
fieldcalculator.setText(x1+"/"+x2+"="+result);
area.append(x1+"/"+x2+"="+result+"\n");
}
break;
case'=':
default:
}
if(count<=1){
}elseif(count>=2){
x1=result;
}
t='*';
}
if(e.getSource()==button19)///法
{
switch(t){
case'+':
result=x1+x2;
fieldshow.setText(result.toString());
fieldcalculator.setText(x1+"+"+x2+"="+result);
area.append(x1+"+"+x2+"="+result+"\n");
break;
case'-':
result=x1-x2;
fieldshow.setText(result.toString());
fieldcalculator.setText(x1+"-"+x2+"="+result);
area.append(x1+"-"+x2+"="+result+"\n");
break;
case'*':
result=x1*x2;
fieldshow.setText(result.toString());
fieldcalculator.setText(x1+"*"+x