java编写的计算器设计报告.docx
《java编写的计算器设计报告.docx》由会员分享,可在线阅读,更多相关《java编写的计算器设计报告.docx(13页珍藏版)》请在冰豆网上搜索。
java编写的计算器设计报告
实验7:
综合实验二
一、试验目的
进一步掌握图形用户界面GUI,了解Swing组件的使用,以及系统提供的该工具的作用,进一步掌握JAVA事件响应机制的原理,更好的掌握面向对象编程的思路。
二、实验要求
创建一个界面来实现一个简单的计算器,要求:
1、实现最基本的计算器界面,包括:
0~9的10个数字按钮,加、减、乘、除、等于5个运算符按钮,一个结果存放的文本区域。
2、实现最基本的加、减、乘、除运算,并能得到正确结果。
3、实现连续的运算,小数点的使用,并考虑各种可能导致异常的情况,将程序作完善;
4、可以通过关闭按钮实现关闭窗口。
三、实验步骤、结果
1、程序代码:
importjava.awt.BorderLayout;
importjava.awt.GridLayout;
importjava.awt.event.ActionEvent;
importjava.awt.event.ActionListener;
importjava.awt.event.WindowAdapter;
importjava.awt.event.WindowEvent;
importjavax.swing.JButton;
importjavax.swing.JFrame;
importjavax.swing.JPanel;
importjavax.swing.JTextField;
importjavax.swing.SwingConstants;
publicclassZhxCacuextendsJFrameimplementsActionListener{
JPaneljpResult=newJPanel();
JPaneljpButton=newJPanel();
JTextFieldjtfResult=newJTextField("0");
JButtonzero=newJButton("0");//数字键0
JButtonone=newJButton("1");//数字键1
JButtontwo=newJButton("2");//数字键2
JButtonthree=newJButton("3");//数字键3
JButtonfour=newJButton("4");//数字键4
JButtonfive=newJButton("5");//数字键5
JButtonsix=newJButton("6");//数字键6
JButtonseven=newJButton("7");//数字键7
JButtoneight=newJButton("8");//数字键8
JButtonnine=newJButton("9");//数字键9
JButtonplus=newJButton("+");
JButtonsub=newJButton("-");
JButtonmul=newJButton("*");
JButtondiv=newJButton("/");
JButtonequal=newJButton("=");
JButtonce=newJButton("ce");//置零键
JButtonpoint=newJButton(".");
JButtontzero=newJButton("00");
//com代表敲击运算符,digit代表敲击数字键
booleancom=false;
booleandigit=false;
floattotal=0;
Stringsum="";
intsymbol=0;
intb,c=0;
publicZhxCacu(){
//添加结果输入框并设置对齐方式
jpResult.setLayout(newBorderLayout());
jpResult.add(jtfResult);
jtfResult.setEditable(false);
jtfResult.setHorizontalAlignment(SwingConstants.RIGHT);
//将组件添加到窗体上
this.add(jpResult,"North");
this.add(jpButton,"Center");
//定义按钮区域布局管理器为网格布局
jpButton.setLayout(newGridLayout(6,3,10,10));
//添加各个按钮键
jpButton.add(seven);
jpButton.add(eight);
jpButton.add(nine);
jpButton.add(four);
jpButton.add(five);
jpButton.add(six);
jpButton.add(one);
jpButton.add(two);
jpButton.add(three);
jpButton.add(zero);
jpButton.add(tzero);
jpButton.add(plus);
jpButton.add(sub);
jpButton.add(mul);
jpButton.add(div);
jpButton.add(point);
jpButton.add(equal);
jpButton.add(ce);
one.addActionListener(this);//对1按钮添加监听事件
two.addActionListener(this);//对2按钮添加监听事件
three.addActionListener(this);//对3按钮添加监听事件
four.addActionListener(this);//对4按钮添加监听事件
five.addActionListener(this);//对5按钮添加监听事件
six.addActionListener(this);//对6按钮添加监听事件
seven.addActionListener(this);//对7按钮添加监听事件
eight.addActionListener(this);//对8按钮添加监听事件
nine.addActionListener(this);//对9按钮添加监听事件
zero.addActionListener(this);//对0按钮添加监听事件
ce.addActionListener(this);//对置零按钮添加监听事件
plus.addActionListener(this);//对+按钮添加监听事件
equal.addActionListener(this);//对=按钮添加监听事件
sub.addActionListener(this);//对-按钮添加监听事件
mul.addActionListener(this);//对*按钮添加监听事件
div.addActionListener(this);//对/按钮添加监听事件
tzero.addActionListener(this);//对00按钮添加监听事件
point.addActionListener(this);//对.按钮添加监听事件
pack();//初始化窗体大小最合适大小
this.addWindowListener(newWindowAdapter(){
publicvoidwindowClosing(WindowEvente){
System.exit(0);
}
});
this.setSize(300,300);
this.setVisible(true);
}
publicstaticvoidmain(String[]args){
//TODO自动生成方法存根
newZhxCacu();
}
publicvoidactionPerformed(ActionEvente){
//TODO自动生成方法存根
//数字
if(e.getSource()==one){
if(com||digit==false){//第一次敲击数字按钮
jtfResult.setText("1");
com=false;
digit=true;
}else{
sum=jtfResult.getText()+"1";
jtfResult.setText(sum);
}
}
elseif(e.getSource()==two){
if(com||digit==false){//第一次敲击数字按钮
jtfResult.setText("2");
com=false;
digit=true;
}else{
sum=jtfResult.getText()+"2";
jtfResult.setText(sum);
}
}
elseif(e.getSource()==two){
if(com||digit==false){//第一次敲击数字按钮
jtfResult.setText("2");
com=false;
digit=true;
}else{
sum=jtfResult.getText()+"2";
jtfResult.setText(sum);
}
}
elseif(e.getSource()==two){
if(com||digit==false){//第一次敲击数字按钮
jtfResult.setText("2");
com=false;
digit=true;
}else{
sum=jtfResult.getText()+"2";
jtfResult.setText(sum);
}
}
elseif(e.getSource()==two){
if(com||digit==false){//第一次敲击数字按钮
jtfResult.setText("2");
com=false;
digit=true;
}else{
sum=jtfResult.getText()+"2";
jtfResult.setText(sum);
}
}
elseif(e.getSource()==three){
if(com||digit==false){//第一次敲击数字按钮
jtfResult.setText("3");
com=false;
digit=true;
}else{
sum=jtfResult.getText()+"3";
jtfResult.setText(sum);
}
}
elseif(e.getSource()==four){
if(com||digit==false){//第一次敲击数字按钮
jtfResult.setText("4");
com=false;
digit=true;
}else{
sum=jtfResult.getText()+"4";
jtfResult.setText(sum);
}
}
elseif(e.getSource()==five){
if(com||digit==false){//第一次敲击数字按钮
jtfResult.setText("5");
com=false;
digit=true;
}else{
sum=jtfResult.getText()+"5";
jtfResult.setText(sum);
}
}
elseif(e.getSource()==six){
if(com||digit==false){//第一次敲击数字按钮
jtfResult.setText("6");
com=false;
digit=true;
}else{
sum=jtfResult.getText()+"6";
jtfResult.setText(sum);
}
}
elseif(e.getSource()==seven){
if(com||digit==false){//第一次敲击数字按钮
jtfResult.setText("7");
com=false;
digit=true;
}else{
sum=jtfResult.getText()+"7";
jtfResult.setText(sum);
}
}
elseif(e.getSource()==eight){
if(com||digit==false){//第一次敲击数字按钮
jtfResult.setText("8");
com=false;
digit=true;
}else{
sum=jtfResult.getText()+"8";
jtfResult.setText(sum);
}
}
elseif(e.getSource()==nine){
if(com||digit==false){//第一次敲击数字按钮
jtfResult.setText("9");
com=false;
digit=true;
}else{
sum=jtfResult.getText()+"9";
jtfResult.setText(sum);
}
}
elseif(e.getSource()==zero){
if(com||digit==false){//第一次敲击数字按
jtfResult.setText("0");
com=false;
digit=true;
}else{
sum=jtfResult.getText()+"0";
jtfResult.setText(sum);
if(Float.parseFloat(sum)!
=0){
}
else{
if(b==1)
{sum=jtfResult.getText()+"0";
jtfResult.setText(sum);}
else
jtfResult.setText("0");
}
}
}
elseif(e.getSource()==tzero){
if(com||digit==false){//第一次敲击数字按
jtfResult.setText("00");
com=false;
digit=true;
}else{
sum=jtfResult.getText()+"00";
jtfResult.setText(sum);
}
}
elseif(e.getSource()==point){
if(com||digit==false){//第一次敲击数字按钮
b=1;
com=true;
digit=false;
}elseif(c==1);else
{
b=1;
sum=jtfResult.getText()+".";
jtfResult.setText(sum);c=1;
}
}
//运算
elseif(e.getSource()==plus){
symbol=1;c=0;
total=Float.parseFloat(jtfResult.getText());
com=true;
digit=false;
}
elseif(e.getSource()==sub){
symbol=2;c=0;
total=Float.parseFloat(jtfResult.getText());
com=true;
digit=false;
}
elseif(e.getSource()==mul){
symbol=3;c=0;
total=Float.parseFloat(jtfResult.getText());
com=true;
digit=false;
}
elseif(e.getSource()==div){
symbol=4;c=0;
total=Float.parseFloat(jtfResult.getText());
com=true;
digit=false;
}
elseif(e.getSource()==ce){
com=true;
digit=false;
total=0;
sum="0";
jtfResult.setText(sum);
}
//=
elseif(e.getSource()==equal){
com=true;
digit=false;
switch(symbol){
case1:
jtfResult.setText(newFloat(total+Float.parseFloat(jtfResult.getText())).toString());b=0;c=0;break;
case2:
jtfResult.setText(newFloat(total-Float.parseFloat(jtfResult.getText())).toString());b=0;c=0;break;
case3:
jtfResult.setText(newFloat(total*Float.parseFloat(jtfResult.getText())).toString());b=0;c=0;break;
case4:
if(Float.parseFloat(jtfResult.getText())==0)
{try{thrownewException();}
catch(Exceptiona){
jtfResult.setText("错误!
被除数不能为0,请重新输入:
");
}
}
else
jtfResult.setText(newFloat(total/Float.parseFloat(jtfResult.getText())).toString());b=0;c=0;break;
}
digit=false;
total=0;
}
}
}
2、界面:
四、实验中的问题以及解决方案:
1、问题:
被除数为0
解决:
抛出异常
2、问题:
阻止0、小数点在同一数字中重复出现
解决:
设置标志,
五、总结:
1、进一步了解了项目开发的步骤,思路,以及程序的布局和框架结构,尤其是对JAVA的模块化设计有了更为深入的了解。
2、进一步掌握图形用户界面GUI,了解Swing组件的使用,以及系统提供的该工具的作用,进一步掌握JAVA事件响应机制的原理,更好的掌握面向对象编程的思路。