基于JAVA的简单计算器的设计与实现
作者:任凯
来源:《电脑知识与技术》2011年第15期
摘要:随着人们了解信息越来越数据化,高速度的获取信息的同时,对计算机的要求也越来越高,不仅在其容量上越来越大,特别是在其功能上要求的越来越多,数据类型和精度越来越准确。该文用JAVA实现简单计算器的设计。Java是一种简单的,面象对象的,分布式的,解释的,键壮的,安全的,结构的,中立的,可移植的,性能很优异的多线程的,动态的语言。通过设计,达到了预期功能效果。 关键词:Java;信息化;计算器
中图分类号:TP311文献标识码:A文章编号:1009-3044(2011)15-3566-02 1 设计要求
计算器一般是指“电子计算机器”,一般由运算器、存储器、键盘、显示器、电源和一些可选外围设备组成。该设计可以进行十进制下的四则运算(加、减、乘、除)、开根号、百分号、求倒数,还可以实现数值的符号转换及计算器有关內存操作 Backspace表示退格, CE表示将当前文本框內数据清除,C表示文本框內数据清除,同时 var,answer清0。此外还提供了“编辑”、“查看”、“帮助”三个菜单项,使用者可通过使用菜单项实现某些功能。在Java—EditPlus下直接运行(Calculator.java)即可,界面为灰白对称。 2 工作原理图、功能规划 2.1 计算器的界面的设计
设计的计算器窗口中整体使用的是BorderLayout布局,在BorderLayout布局中又嵌套使用了CardLayout布局。菜单栏上有编辑、查看、帮助三个菜单。在菜单下分别是复制、粘帖、标准型、科学型及数字分组、还有帮助主题、关于计算器等菜单项,窗口的中间是文本框区域以白色为背景用来输入输出数据,窗口下面是按钮用来实现各种操作。 2.2 相应功能设计
编辑、查看、帮助菜单是通过JMenu类来实现的,其中复制、粘帖、标准型、科学型及数字分组、还有帮助主题、关于计算器等菜单项都是通过JMenuItem类来实现的,帮助主题菜单项中定义了一个含有滚动条的多行文本区。加、减、乘、除、等于以及求百分号操作都是通过Double类中的parseDouble()方法来实现的。开根号运算是通过java.lang包中的Math类的
龙源期刊网 http://www.qikan.com.cn
sqrt()方法来实现的,求倒数运算通过自定义的方法1:Double.parseDouble()来实现的,并通过toString()方法显示。按下'+/-'按钮时处理方法是自定义的。计算器有关内存操作包括'MC'操作,'MS'操作'MR'操作和'M+'操作,其中'MC'操作的功能是将内存清0 ,'MS'操作的功能是将当前文本框内容保存入内存并显示'M','MR'的操作的功能是将存储器中的信息输出,'M+'的功能是将当前文本框里的数据和存储器中数据相加后,再存入存储器。'Backspace'按钮是利用循环将当前字符串中的最后一个字母删除来实现;'CE'按钮是将当前文本框内数据清除; 'C'按钮是将文本框内数据清除,同时var,answer清0。输入中如果有操作非法,比如按下两次'+',捕获异常。
3 主要功能实现代码 1)加、减、乘、除操作: if (temp == buttonAdd) { switch (prekey) { case 0:
answerd += Double.parseDouble(textAnswer.getText()); break; case 1:
answerd -= Double.parseDouble(textAnswer.getText()); break; case 2:
answerd *= Double.parseDouble(textAnswer.getText());//返回一个新的 double 值,该值被初始化为用指定文本框表示的值 break; case 3:
if (Double.parseDouble(textAnswer.getText()) == 0) { textAnswer.setText(\"除数不能为零\"); clickable = false;}
龙源期刊网 http://www.qikan.com.cn
else
answerd /= Double.parseDouble(textAnswer.getText()); break; default:
answerd = Double.parseDouble(textAnswer.getText());} textAnswer.setText(\"\"); prekey = key = 0;} 2)开根号运算:
if (temp == buttonSqrt && clickable == true) { String s = textAnswer.getText(); if (s.charAt(0) == '-') {
textAnswer.setText(\"负数不能开根号\"); clickable = false;} else
textAnswer.setText(Double.toString(java.lang.Math.sqrt(Double. parseDouble(textAnswer.getText()))));} 其他功能代码因篇幅所限不一一列出。 程序界面如图1所示。 4 运行结果分析
1)进行加、减、乘、除运算,首先键入计算的第一个数字,单击“+”执行加、“-”执行减、“*”执行乘或“/”执行除,再键入计算的下一个数字,输入所有剩余的运算符和数字,最后单击“=”即可。若键入了计算的第一个数字再连续单击两个或两个以上运算符,或直接单击一个运算符,则提示“操作非法”。
龙源期刊网 http://www.qikan.com.cn
2)等于运算。对上两个数字执行任意运算。要重复上一次的操作,请再次单击=即可。 3)求百分号。输入一个数,单击运算符(+、-、*或/),再输入第二个数,单击%,然后单击=即可。例如2*20%将显示为0.4。
4)开根号运算。计算显示数字的平方根,输入一个数,单击sqrt运算符即可,还可进行连续运算。如果没输入一个数而直接单击sqrt运算符,则提示“操作非法”。如果输入的数为负数,则提示“负数不能开根号”。
5)求倒数运算。计算显示数字的倒数,输入一个数,单击1/x运算符即可,还可进行连续运算。如果没输入一个数而直接单击1/x运算符,则提示“操作非法”。如果输入的数为0,则提示“零不能求倒数”。
6)正负转换运算。改变显示数字的正负号。输入一个数,单击+/-运算符即可。 7) 计算器有关内存作包括'MC'操作,'MS'操作'MR'操作和'M+'操作,其中'MC'操作的功能是将内存清0 ,'MS'操作的功能是将当前文本框内容保存入内存并显示'M','MR'的操作的功能是将存储器中的信息输出,'M+'的功能是将当前文本框里的数据和存储器中数据相加后,再存入存储器。'Backspace'按钮是利用循环将当前字符串中的最后一个字母删除来实现;'CE'按钮是将当前文本框内数据清除;'C'按钮是将文本框内数据清除,同时var,answer清0。 参考文献:
[1] 田立平,李兴衡,李志.通用客观题考试软件的设计[J].2005(04):5-9.
[2] 李一波,李润霞,王亚杰.计算机无纸考试系统上机考试软件设计[J].2000(12):55-58. [3] 吕凤翥.Java语言程序设计[M].北京:清华大学出版社,2006. [4] 张文乐.基于Java的计算机图形学[M].北京:科学出版社,2004. 注:本文中所涉及到的图表、注解、公式等内容请以PDF格式阅读原文
因篇幅问题不能全部显示,请点此查看更多更全内容