- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
计算器键盘输入update(非常有用)
计算器update——实现键盘输入吴蔓 电工一 2017.5.12之前做计算器时就想实现键盘功能,但是当时还不太会,刚接触,就先实现了各种函数,但是一直想实现键盘输入和鼠标输入均可的计算器,所以我最近半个月一直断断续续在做,由于最近考试多所以进度很慢,今天刚好考完,就可以全身心投入了,做好了这个只有加减乘除的键盘鼠标输入的计算器。由于时间有限,这次不做exe了。这次的键盘输入我只是完成了基本的加减乘除,sin,cos等函数运算暂时没有考虑,但是这是一个可以用鼠标控制输入也可以键盘输入的计算器,主要功能:按下home键——清零,清空结果文本框,可重新输入新的数字按下ESC键——退出计算器按下backspace键——退格按下等号/回车——得到计算结果,但是如果按的是等号,结果文本框会多显示一个”=”在最后,但是不影响计算结果正确性。如下图:(界面中右下角hello没有任何功能,只是为了美观)鼠标输入的逻辑——首先设置当前运算符是=,输入一个数字,然后输入运算符,一旦检测到输入运算符就应该要进入一个处理运算符的函数,然后由于当前运算符是=,就执行等号那部分的程序(仅仅是获得目前输入的第一个数字),然后应该清空文本框,让firstDigit=true,又可以输入数字,并改变当前运算符为刚输入的运算符;再输入等号,又进入处理运算符的那个程序,但是当前运算符应该是刚刚输入的运算符,所以执行+-*/对应的运算程序,得到结果。键盘输入的逻辑——按下操作数一,显示在文本框中——按下运算符(+-*/),获取第一个操作数到resultNum中,清空文本框——显示出运算符,再清除;——按下操作数2,显示出来,按下等号,就获取操作数二,再做相应的计算得到结果显示出来。关键是加减乘除四则运算用到的四个布尔变量——plus,sub,mul,div,他们最开始设置为false,一旦检测到相应的运算符按下就变为true,等号按下后根据谁是true做什么运算。做的过程中遇到一些问题,主要有以下几个:乘号,加号检测不到。使用if(e.getKeyCode()==KeyEvent.VK_SHIFT e.getKeyCode()==61){//加号System.out.println(你按了+键);resultNum=getNumberFromText();resultText.setText();plus=true;}是检测不到的,具体解决方法在代码中写的很清楚。加号应该使用if(e.getKeyChar()==+){//加号System.out.println(你按了+键);resultNum=getNumberFromText();resultText.setText();plus=true;}才可以检测到。加减乘除计算不正确,后来分析原来是因为第二个数字输入以后和运算符一起出现在结果文本框中,当按下等号或者回车时,get到的除了第二个操作数还有运算符,所以结果不对,所以想清除掉运算符的显示,用的代码:if((e.getKeyCode()=KeyEvent.VK_0 e.getKeyCode()=KeyEvent.VK_9)){ if(e.getKeyChar()==*){//乘号,乘号必须放在下面这个if前面,否则就无效,且又必须放在这个检测数字的if语句中才有效,因为按乘号是shift+8,8是数字键,所以加号就不必放在这里System.out.println(你按了*键);resultNum=getNumberFromText();resultText.setText();mul=true;}if(+-*/.indexOf(resultText.getText())=0){//非常关键!!!如果检测到结果文本框里面有运算符就清空,这样才不会影响到等号按下后从结果文本框get到的第二个数resultText.setText();}}加号和乘号的顺序问题,这两个不是随便放就有效的,顺序和原因我都写在注释中了,主要是由于加号是shift和=,没涉及到数字,而乘号是shift和8,有数字所以必须放在检测数字的if中(见代码)。程序:import javax.swing.*;import java.awt.*;import java.awt.event.*;public class KeyTest extends JFrame implements ActionListener,KeyListener{private static final long serialVersionUID= 1L;private final String[] KEYS={7,8,9,÷,4,5,6,*,1,2,3,-,0,.,=,+,BackSpace,AllClear,Exit
您可能关注的文档
最近下载
- 党小组工作职责与相关制度汇编.docx VIP
- 英语丨贵州省贵阳市2024届高三上学期8月摸底考试英语试卷及答案.pdf VIP
- 2025年杭州市房地产市场监测报告.doc VIP
- 仓库管理岗位职责仓库管理岗位职责精选.doc VIP
- TGDICST-粉类防晒化妆品 SPF 值体外测定方法.pdf VIP
- 高处作业施工专项方案.docx VIP
- 政府采购评审专家资格考试题库.doc VIP
- DB4412_T 19-2022 消防车道、救援场地和窗口标识设置规范.docx VIP
- 2025年5月三级人力资源管理师考试《理论知识》真题试卷【完整版】.pdf VIP
- 仓库管理规章制度.pdf VIP
文档评论(0)