首页 > 范文大全 > 正文

基于JAVA的简单计算器的设计与实现

开篇:润墨网以专业的文秘视角,为您筛选了一篇基于JAVA的简单计算器的设计与实现范文,如需获取更多写作素材,在线客服老师一对一协助。欢迎您的阅读与分享!

摘要:计算器是当今社会较常见的电子产品之一。随着科学技术发展的日新日异,计算器已经在生活中无处不在。它大大降低了数字计算的难度,提高了计算的准确度和精确度,奠定了其它科学发展研究的基础。Java是一种简单的,面象对象的,分布式的,解释的,键壮的,安全的,结构的,中立的,可移植的,性能很优异的多线程的,动态的语言。该文基于AWT组,设计了GUI界面的计算器应用程序,完成简单的算术运算。通过设计,达到了预期功能效果。

关键词:java;计算器;信息化

中图分类号:TP313文献标识码:A文章编号:1009-3044(2012)12-2786-03

Java是目前全球较有影响力的软件开发工具之一,是应用非常广泛的一种面向对象的程序设计语言。Java不仅仅适于在网页上内嵌动画,而且是一门极好的完全的软件编程的小语言。“虚拟机”机制、垃圾回收以及没有指针等使它很容易实现不易崩溃且不会泄漏资源的可靠程序。JAVA丢弃了很多C++的复杂功能,形成一门紧凑而易学的语言。不像C++,Java强制面向对象编程,要在Java里写非面向对象的程序就像要在Pascal里写“空心粉式代码”一样困难。Java的优点很多:二进制码可移植到其他平台;程序可以在网页中运行;内含的类库非常标准且极其健壮;自动分配合垃圾回收避免程序中资源泄漏等等。该文即为用JAVA实现拟合二次函数。课程设计是培养学生综合运用所学知识,发现、提出、分析并解决实际问题,锻炼实践能力的重要环节,是对学生实际工作能力的具体训练和考察过程。设该文设计了GUI界面的计算器应用程序,完成简单的算术运算。

1设计思路

笔者设计的计算器是基于AWT组;其功能就是可以完成加法、减法、乘法、除法简单运算。

此程序由3个面板组成,第一个面板放置输入信息和运算结果的显示文本域以及一个清除输入的按钮。SetLayout方法用于设置容器的布局管理器。此程序采用流布局,即FlowLayout,所有放置的组件按大小依次排列。

第二个面板放置数字按钮(“9、8、7、6、5、4、3、2、1、0”),点按钮(“、”)及等于(“=”)按钮。在for循环中,依次实例化9个数字按钮,并将按钮用add方法加入到面板2中。setForeground方法可为组件设置前景色,这里为功能键按钮设置为红色,以将功能按钮与数字按钮分开。

第三个面板放置4个运算符——加、减、乘、除

最后,将三个面板放置到Applet中,Applet按照FlowLayout布局,依次加入的三个面板会按照顺序及它们的尺寸入放置到合适的位置。

事件处理:事件处理通过action方法来完成[public boolean action(Event e, Object o){}],可通过Event类的target变量来获取事件来源,将e.target与等于按钮bEqual相比较,如果相符,则事件来源于等于按钮,这里就应调用对应的方法处理运算结果,并将其显示出来。if(e.target == bEqual) { //等于按钮事件处理doOperator(); //处理运算}

数字运算

用户输入的是字符串,有运算之前,需要将其转换成其他数据类型,这里,需要将字符串转换成double值。首先,从字符串得到一个Double类的实例,调用该实例的doubleValue方法可得到与字符串对应的double值。也可以调用Double类中的parseDouble方法直接从字符得到double值。

以加法举例说明运算过程。将操作符“+”比较,确定运算类型。如果为加,则直接将两者相加,得到运算结果,并通过setText方法显示在文本域中。

dFore = (new Double(foreText)).doubleValue(); //得到第一输入

dBack = (new Double(backText)).doubleValue(); //得到第二输入f

oreText = "";

backText = tfAnswer.getText();

if(preOp.equals("+"))

{ //加运算处理

d = new Double((dBack + dFore)); //得到运算结果

tfAnswer.setText(d.toString()); //显示运算结果

backText = d.toString();}

2具体实现

部分程序源代码如下:

public void doOperator()

{ double dFore,dBack;

Double d;

if(preOp.equals(""))

{

backText = foreText;//保存当前输入的操作数,以便后来显示

foreText = "";//为存贮下一个操作数作准备

tfAnswer.setText(backText); //显示文本

}

else

{

dFore = (new Double(foreText)).doubleValue(); //将第一输入数据转化成相应的double型数

dBack = (new Double(backText)).doubleValue(); //得到第二输入

foreText = "";

backText = tfAnswer.getText(); //tfAnswer小屏幕

if(preOp.equals("+"))

{ //加运算处理

d = new Double((dBack + dFore)); //得到运算结果

tfAnswer.setText(d.toString()); //显示运算结果

backText = d.toString();}

if(preOp.equals("-"))

{//减运算处理

d = new Double((dBack - dFore));//得到运算结果

tfAnswer.setText(d.toString()); //显示运算结果

backText = d.toString();}

if(preOp.equals("*"))

{//乘运算处理

d = new Double((dBack * dFore));//得到运算结果

tfAnswer.setText(d.toString());//显示运算结果

backText = d.toString();}

if(preOp.equals("/"))

{//除运算处理

if (dFore==0){

tfAnswer.setText("除数不能为0"); //显示出错信息

return;}

d = new Double((dBack / dFore));//得到运算结果

tfAnswer.setText(d.toString());//显示运算结果

backText = d.toString();}}

preOp = currentOp; } //当前操作赋给上一步操作

……

3运行调试与分析讨论

在开始时没有考虑到除数为零的情况,结果不计算除数为零时抛出了一个异常如图1显示文本域显示Infinty字样。加入显示出错信息提示,可以使使用者清楚明白,便于使用,如图2所示。

4总结

设计很好地完成了简单计算机器的设计与实现,通过理论与实际相结合,把所学的理论知识与实践相结合起来,从理论中得出结论,进一步提高自身的实际动手能力和独立思考的能力。该设计的完成涉及JAVA各方面知识的综合运用,为以后在这些方面的应用提供了很好的例程。

参考文献:

[1]吕凤翥.Java语言程序设计[M].北京:清华大学出版社,2006.

[2]张文乐.基于Java的计算机图形学[M].北京:科学出版社,2004.