java实验报告计算器附源代码Word格式文档下载.docx
- 文档编号:17628443
- 上传时间:2022-12-07
- 格式:DOCX
- 页数:10
- 大小:185.76KB
java实验报告计算器附源代码Word格式文档下载.docx
《java实验报告计算器附源代码Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《java实验报告计算器附源代码Word格式文档下载.docx(10页珍藏版)》请在冰豆网上搜索。
privatefinalString[]str={"
sqrt"
"
+/-"
CE"
C"
7"
"
8"
9"
/"
4"
5"
6"
"
*"
1"
2"
3"
-"
0"
."
="
+"
};
//定义按钮数组,用于实现上面的按钮字符
JButton[]buttons=newJButton[str.length];
//定义文本行,初始显示0
JTextFielddisplay=newJTextField("
);
//计算器构造函数
publicCalculator(){
super("
计算器"
//panel1是集合了数字和运算符的面板
JPanelpanel1=newJPanel(newGridLayout(5,4));
for(inti=0;
i<
str.length;
i++){
//把按钮数组加进来
buttons[i]=newJButton(str[i]);
panel1.add(buttons[i]);
}
this.addWindowListener(newWinClose());
//panel2是文本域和归零面板
JPanelpanel2=newJPanel(newBorderLayout());
panel2.add("
Center"
display);
getContentPane().setLayout(newBorderLayout());
getContentPane().add("
North"
panel2);
panel1);
//为每个数字和运算符按钮添加事件监听器
i++)
buttons[i].addActionListener(this);
//为文本域添加事件监听器
display.addActionListener(this);
//设置窗口位置
setBounds(500,200,400,400);
//设置框架不能改变大小
setResizable(false);
//设置组件可见
setVisible(true);
//调整此窗口的大小,以适合其子组件的首选大小和布局
pack();
}
//value用来记录当前文本域的数值
doublevalue=0;
publicvoidactionPerformed(ActionEvente){
Stringlabel=e.getActionCommand();
if(label.equals("
)){
display.setText("
"
}
elseif(label.equals("
handleC();
value=Double.parseDouble(display.getText());
if(value<
0){
display.setText("
负数不存在平方根!
}
else{
value=Math.sqrt(value);
display.setText(String.valueOf(value));
value=Double.parseDouble(display.getText())*(-1);
display.setText(String.valueOf(value));
elseif("
0123456789."
.indexOf(label)>
=0)
/*("
=0)意思是当前输入的数字是“0123456789”中的一个时,响应输入数字事件,和下面同效果
*(label.equals("
)||label.equals("
)||label.equals("
))*/
handleNumber(label);
else
handleOperator(label);
//设置布尔型变量,用于标记是否是第一次按下小数点,初始为是
booleanisFirstDigit=true;
//响应数字按钮
publicvoidhandleNumber(Stringkey){
if(isFirstDigit)
display.setText(key);
elseif((key.equals("
))&
&
(display.getText().indexOf("
)<
0))
display.setText(display.getText()+"
elseif(!
key.equals("
))
display.setText(display.getText()+key);
isFirstDigit=false;
//归零按钮C响应
publicvoidhandleC(){
display.setText("
isFirstDigit=true;
operator="
;
Doublenumber=0.0;
Stringoperator="
//响应运算符按钮
publicvoidhandleOperator(Stringkey){
if(operator.equals("
number+=Double.valueOf(display.getText());
display.setText(String.valueOf(number));
}
elseif(operator.equals("
number-=Double.valueOf(display.getText());
number*=Double.valueOf(display.getText());
if(Double.parseDouble(display.getText())==0){
error:
除数不能为0"
}else{
number/=Double.valueOf(display.getText());
display.setText(String.valueOf(number));
}}
number=Double.valueOf(display.getText());
operator=key;
publicstaticvoidmain(String[]args){
//程序入口,新建计算器
newCalculator();
//实现窗口事件监听器接口
classWinCloseimplementsWindowListener{
publicvoidwindowClosing(WindowEventev){
System.exit(0);
publicvoidwindowsOpend(WindowEventev){}
publicvoidwindowActivated(WindowEventev){}
publicvoidwindowsDeactivated(WindowEventev){}
publicvoidwindowClosed(WindowEventev){}
publicvoidwindowIconified(WindowEventev){}
publicvoidwindowDeiconified(WindowEventev){}
@Override
publicvoidwindowDeactivated(WindowEvente){
//TODOAuto-generatedmethodstub
publicvoidwindowOpened(WindowEvente){
四、实验结果及分析
(一、)程序功能测试:
1、加法、减法、乘法、除法测试:
20+0.5=20.5100-10.5=89.5
20*20=4000/2=0
2/0报错1/2=0.5
2、Sqrt(开方)测试:
√25=5负数开方报错
3、+/-测试:
-2+1.5=-0.5
4、CE(清除当前输入项)和C(清除整个计算式)测试:
计算10+20=30时输入10+22然后按下CE清除22,重新输入20。
运算正确。
(二、)出现过的问题及解救方案:
1、运算数据可以随意输入,导致一个数据可以输入多个小数点,运算报错。
修改思路:
修改对数字按钮的事件监听的实现方法,定义一个布尔型的全局变量isFirstDigit,判断此运算项是否已经有小数点,如果已经输入过,按下小数点无响应,防止输入多个小数点导致运算错误。
2、算法对输入数据的运算检查不足,导致出现给负数开方以及除数为0的情况。
Sqrt按钮的事件监听增加对开方数的合理性检查,如果是负数,显示负数不能开方;
增加对被除数的检查,如果被除数是0,显示除数不能是0。
3、按下加减乘除按钮的时候第二个运算项没有输入,怎么执行的问题。
解决思路:
把运算数第一项用number记录下来,把运算符用operator记录下来,等到第二项数据被输入的时候再执行计算。
(三、)心得感受:
这是第一次用编程语言写出一个可交互的图形化界面,通过查找资料,理解其中的算法和事件的响应顺序,感觉很有成就感。
第一次编写运行出现了很多错误,同时,通过程序测试也发现了很多的程序缺陷,经过不断地对算法和思路改进,最终基本实现了该有的功能。
程序可以对输入的数据进行强制的规范,同时,对非法运算进行提醒。
但是,对于10+20这种运算得出的结果是30.0,这对平时见到的30的运算结果来说还有待进一步细化。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- java 实验 报告 计算器 源代码