用JAVA编写计算器程序模拟Windows计算器.docx
- 文档编号:9799350
- 上传时间:2023-02-06
- 格式:DOCX
- 页数:11
- 大小:16.48KB
用JAVA编写计算器程序模拟Windows计算器.docx
《用JAVA编写计算器程序模拟Windows计算器.docx》由会员分享,可在线阅读,更多相关《用JAVA编写计算器程序模拟Windows计算器.docx(11页珍藏版)》请在冰豆网上搜索。
用JAVA编写计算器程序模拟Windows计算器
用JAVA编写计算器程序(模拟Windows计算器)
importjava.awt.*;
importjava.awt.event.*;
publicclassCalculationextendsWindowAdapterimplementsActionListener
{
doubledResult=0;
doubledNowInput=0;
doubledMemory;
int n=0;//记载小数位数
int nOperation=1;//记录运算符类型
int nBitsNum=0; //记录总共输入的位数
booleanalreadyHaveDot=false;//已经有小数点?
booleankeyAvailable=true;
booleanalreadyClickedEqueal=false;//是否按下过"="?
booleanisTempNowInput=false;//是否在计算出结果后直接按运算符将结果赋给了当前输入值?
Framef;
Panelp1,p2,p3,p4,p5,p6;
TextFieldtf1,tf2;
Buttonb1,b2,b3,b4,b5,b6,b7,b8,b9,b0;
ButtonbDiv,bSqrt,bMulti,bMinus,bPercent,bPlus,bReciprocal,bEqual,bDot,bNegative;
ButtonbBackspace,bCE,bC,bMR,bMS,bMC,bM;
publicvoiddisplay()
{
f=newFrame("计算器");
f.setSize(280,213);
f.setLocation(200,200);
f.setBackground(Color.LIGHT_GRAY);
f.setResizable(false);
f.setLayout(newBorderLayout(3,3));
p1=newPanel(newGridLayout(1,3,5,5)); //用于存放backspace,ce,c三键
p2=newPanel(newGridLayout(4,5,5,5));//用于存放数字区及附近共20键,此处间隙设置可能不合理,以后调整
p3=newPanel(newGridLayout(5,1,5,5));//用于存放MC,MR,MS,M+键及显示M状态文本框,此处间隙设置可能不合理,以后调整
p4=newPanel(newFlowLayout());//用于存放p1,p2
p5=newPanel(newFlowLayout());
p6=newPanel(newFlowLayout());
p4.add(p1);
p4.add(p2);
tf1=newTextField(35); //存放显示区
tf1.setText("0.");
tf1.setEditable(false);
p5.add(tf1);
f.add(p5,BorderLayout.NORTH);
f.add(p4,BorderLayout.CENTER);
f.add(p3,BorderLayout.WEST);
b1=newButton("1");
b2=newButton("2");
b3=newButton("3");
b4=newButton("4");
b5=newButton("5");
b6=newButton("6");
b7=newButton("7");
b8=newButton("8");
b9=newButton("9");
b0=newButton("0");
b1.addActionListener(this);
b2.addActionListener(this);
b3.addActionListener(this);
b4.addActionListener(this);
b5.addActionListener(this);
b6.addActionListener(this);
b7.addActionListener(this);
b8.addActionListener(this);
b9.addActionListener(this);
b0.addActionListener(this);
bDiv=newButton("/");
bSqrt=newButton("sqrt");
bMulti=newButton("*");
bMinus=newButton("-");
bPercent=newButton("%");
bPlus=newButton("+");
bReciprocal=newButton("1/x");
bEqual=newButton("=");
bDot=newButton(".");
bNegative=newButton("+/-");
bDiv.addActionListener(this);
bSqrt.addActionListener(this);
bMulti.addActionListener(this);
bMinus.addActionListener(this);
bPercent.addActionListener(this);
bPlus.addActionListener(this);
bReciprocal.addActionListener(this);
bEqual.addActionListener(this);
bDot.addActionListener(this);
bNegative.addActionListener(this);
p2.add(b7);
p2.add(b8);
p2.add(b9);
p2.add(bDiv);
p2.add(bSqrt);
p2.add(b4);
p2.add(b5);
p2.add(b6);
p2.add(bMulti);
p2.add(bPercent);
p2.add(b1);
p2.add(b2);
p2.add(b3);
p2.add(bMinus);
p2.add(bReciprocal);
p2.add(b0);
p2.add(bNegative);
p2.add(bDot);
p2.add(bPlus);
p2.add(bEqual);
bBackspace=newButton("Backspace");
bCE=newButton("CE");
bC=newButton("C");
bBackspace.addActionListener(this);
bCE.addActionListener(this);
bC.addActionListener(this);
p1.add(bBackspace);
p1.add(bCE);
p1.add(bC);
tf2=newTextField
(2);
tf2.setEnabled(false);
tf2.setBackground(Color.LIGHT_GRAY);
bMC=newButton("MC");
bMR=newButton("MR");
bMS=newButton("MS");
bM=newButton("M+");
bMC.addActionListener(this);
bMR.addActionListener(this);
bMS.addActionListener(this);
bM.addActionListener(this);
p6.add(tf2);
p3.add(p6);
p3.add(bMC);
p3.add(bMR);
p3.add(bMS);
p3.add(bM);
f.setVisible(true);
f.addWindowListener(this);
}
publicvoidactionPerformed(ActionEvente)
{
//key0to9
if(this.keyAvailable&&e.getActionCommand().length()==1&&e.getActionCommand().compareTo("0")>=0&&e.getActionCommand().compareTo("9")<=0)
{
if(this.isTempNowInput)
{
this.dNowInput=0;
this.isTempNowInput=false;
}
this.nBitsNum++;
if(this.alreadyHaveDot==false)
this.dNowInput=this.dNowInput*10+Double.parseDouble(e.getActionCommand());
else
{
doubletemp=Double.parseDouble(e.getActionCommand());
for(inti=this.n;i<0;i++)
{
temp*=0.1;
}
this.dNowInput+=temp;
this.n--;
}
this.tf1.setText(Double.toString(this.dNowInput));
}
//keydot
if(this.keyAvailable&&e.getActionCommand()==".")
{
if(this.alreadyHaveDot==false)
{
this.nBitsNum++;
this.alreadyHaveDot=true;
this.n=-1;
}
}
//key"+","-","*","/"
if(this.keyAvailable&&e.getActionCommand()=="+"||e.getActionCommand()=="-"||e.getActionCommand()=="*"||e.getActionCommand()=="/")
{
if(this.alreadyClickedEqueal)
{
this.dNowInput=this.dResult;
this.isTempNowInput=true;
}
else
{
switch(this.nOperation)
{
case1:
this.dResult+=this.dNowInput;break;
case2:
this.dResult-=this.dNowInput;break;
case3:
this.dResult*=this.dNowInput;break;
case4:
{
if(this.dNowInput==0)
{
tf1.setText("除数不能为零");
this.keyAvailable=false;
}
elsethis.dResult=this.dResult/this.dNowInput;
}
}
if(this.keyAvailable)tf1.setText(Double.toString(this.dResult));
this.dNowInput=0;
}
if(e.getActionCommand()=="+")
{
this.nOperation=1;
}
if(e.getActionCommand()=="-")
{
this.nOperation=2;
}
if(e.getActionCommand()=="*")
{
this.nOperation=3;
}
if(e.getActionCommand()=="/")
{
this.nOperation=4;
}
this.nBitsNum=0;
this.alreadyClickedEqueal=false;
}
//key"+/-"
if(this.keyAvailable&&e.getActionCommand()=="+/-")
{
this.dNowInput=0-this.dNowInput;
tf1.setText(Double.toString(this.dNowInput));
}
//key"C"
if(e.getActionCommand()=="C")
{
this.nBitsNum=0;
this.dResult=0;
this.dNowInput=0;
this.alreadyHaveDot=false;
this.n=0;
this.nOperation=1;
this.keyAvailable=true;
this.alreadyClickedEqueal=false;
tf1.setText("0.");
}
//key"CE"
if(e.getActionCommand()=="CE")
{
this.nBitsNum=0;
this.dNowInput=0;
this.alreadyHaveDot=false;
this.n=0;
this.nOperation=1;
this.keyAvailable=true;
tf1.setText("0.");
}
//key"sqrt"
if(this.keyAvailable&&e.getActionCommand()=="sqrt")
{
if(this.alreadyClickedEqueal)
{
if(this.dResult>=0)
{
this.dResult=Math.sqrt(this.dResult);
tf1.setText(Double.toString(this.dResult));
}
else
{
tf1.setText("函数输入无效");
this.keyAvailable=false;
}
}
else
{
if(this.dNowInput>=0)
{
this.dNowInput=Math.sqrt(this.dNowInput);
tf1.setText(Double.toString(this.dNowInput));
}
else
{
tf1.setText("函数输入无效");
this.keyAvailable=false;
}
}
}
//key"1/x"
if(this.keyAvailable&&e.getActionCommand()=="1/x")
{
if(this.dNowInput==0)
{
tf1.setText("除数不能为零");
this.keyAvailable=false;
}
else
{
this.dNowInput=1/this.dNowInput;
tf1.setText(Double.toString(this.dNowInput));
}
}
//key"="
if(this.keyAvailable&&e.getActionCommand()=="=")
{
this.alreadyClickedEqueal=true;
switch(this.nOperation)
{
case1:
this.dResult+=this.dNowInput;break;
case2:
this.dResult-=this.dNowInput;break;
case3:
this.dResult*=this.dNowInput;break;
case4:
{
if(this.dNowInput==0)
{
tf1.setText("除数不能为零");
this.keyAvailable=false;
}
elsethis.dResult=this.dResult/this.dNowInput;
}
}
if(this.keyAvailable)tf1.setText(Double.toString(this.dResult));
}
//key"MS"
if(this.keyAvailable&&e.getActionCommand()=="MS")
{
this.dMemory=this.dNowInput;
if(this.dMemory!
=0)
tf2.setText("M");
}
//key"MC"
if(this.keyAvailable&&e.getActionCommand()=="MC")
{
this.dMemory=0;
tf2.setText("");
}
//key"MR"
if(this.keyAvailable&&e.getActionCommand()=="MR")
{
this.dNowInput=this.dMemory;
tf1.setText(Double.toString(this.dNowInput));
}
//key"M+"
if(this.keyAvailable&&e.getActionCommand()=="M+")
{
this.dMemory+=this.dNowInput;
if(this.dMemory!
=0)
tf2.setText("M");
elsetf2.setText("");
}
//key"%"
if(this.keyAvailable&&e.getActionCommand()=="%")
{
this.dNowInput=(this.dResult*this.dNowInput)/100;
tf1.setText(Double.toString(this.dNowInput));
}
//key"Backspace"
if(this.keyAvailable&&e.getActionCommand()=="Backspace")
{
if(!
this.alreadyClickedEqueal){
if(this.dNowInput!
=0)
{
if(this.alreadyHaveDot)
{
if(this.n==-1)
{
this.alreadyHaveDot=false;
this.n=0;
}
else
{
Stringstr,str1;
str=tf1.getText();
str1=str.substring(0,this.nBitsNum-1);
this.nBitsNum--;
this.n++;
this.dNowInput=Double.parseDouble(str1);
tf1.setText(Double.toString(this.dNowInput));
}
}
else
{
inttemp;
temp=(int)(this.dNowInput/10);
this.dNowInput=(double)temp;
tf1.setText(Double.toString(this.dNowInput));
}
}
}
}
}
publicstaticvoidmain(Stringargs[])
{
Calculationcal=newCalculation();
cal.display();
}
publicvoidwindowClosing(WindowEvente)
{
System.exit(0);
}
}
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- JAVA 编写 计算器 程序 模拟 Windows