JAVA写计算器小程序.docx

JAVA写计算器小程序.docx

ID:59254696

大小:12.63 KB

页数:6页

时间:2020-09-08

JAVA写计算器小程序.docx_第1页
JAVA写计算器小程序.docx_第2页
JAVA写计算器小程序.docx_第3页
JAVA写计算器小程序.docx_第4页
JAVA写计算器小程序.docx_第5页
资源描述:

《JAVA写计算器小程序.docx》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、/*本程序是一个计算器只能进行四则运算,当然也可以加上括号.由于时间有限没有图形界面。*但经过多次调试bug已经降为最少,如有bug纯属正常毕竟本人能力有限。*例如输入(5.2+6*2)/3*@anotherroysatm*本程序用到了中缀转后缀算法,及后缀计算。用栈和集合共同完成。*完成日期2015年5月11日共耗时两周时间。*本程序纯属原创,不得以任何方式作为商业用途,后果自负。*/packagetext;importjava.util.*;importjava.io.*;publicclassSamplenessSta

2、ck{ArrayListlist=newArrayList();//创建动态数组list,用于存放输入的表达式及后面计算部分结果存放ArrayListrearlist=newArrayList();//创建动态数组rearlist,用于缓存括号内的计算结果Stackstack1=newStack();//创建栈stack1Stackstack2=newStack();//创建栈stack2/*创建内部类,没什么用(主要作者刚学完内部类,想学以致用),根据自己喜好,可以删除*/publicclassTestStack{priv

3、ateinti=0,j=0,t=0,flag=0,flag_m=0;//创建一些变量后面需要使用privatedoublesum=0,f=0;publicintopratorPrior(charc)//判断运算符优先级{switch(c){case'(':return1;case')':return1;case'*':return2;case'/':return2;case'+':return3;case'-':return3;default:return-1;}}publicvoidstack()throwsIOExcep

4、tion{Scannercin=newScanner(newBufferedInputStream(System.in));//扫描输入的表达式System.out.println("输入表达式:");Strings=cin.nextLine();/*把输入的表达式从String类型中的数字转换成double*/while(i='0'&&s.charAt(i)<='9'

5、

6、s.charAt(i)=='.')//判断是否为数字和小数点{if(s.charAt(i)!='.

7、')sum=(s.charAt(i)-'0')+sum*10;//先全部转换成整数elsej=i;//标记小数点位置,方便后面统计数值(没有使用hashcode)t=0;f++;}if((s.charAt(i)<'0'

8、

9、s.charAt(i)>'9')&&s.charAt(i)!='.'

10、

11、s.length()-1==i){//判断四则运算符,和括号t++;if(t==1){if(s.length()-1==i)//这条if语句颇有意思,判断最后一个字符是不是‘)’{//如果不判断则可能导致自己输入的数经过String转换

12、double存到list数组中顺序有变化。if(j!=0)//你输入的是(6+6)/9.2存到list数组可能变成(6+)6/9.2,可能还会产生别的变化。sum=sum/Math.pow(10,i-j);//转换成我们输入的数list.add(sum);//放入动态数组if(s.charAt(i)==')')//放入动态数组list.add(s.charAt(i));}else{if(j!=0)sum=sum/Math.pow(10,i-j-1);if(f!=0)list.add(sum);list.add(s.charA

13、t(i));}}else{list.add(s.charAt(i));}j=0;sum=0;}i++;}/*在输入的表达式前面加上一对()方便后面计算使用*/list.add(')');list.add(0,'(');/*这个for语句很重要,有了这条for语句才能自由的使用负号例如-5*5-3或6+(-9),本程序负号和减号为同一符号*//*这个for语句的这几条if语句对应了所有由‘-’引起的bug。*/for(intd=0;d

14、ist.get(d-1).equals('(')&&list.get(d+1).equals('(')){for(intr=0;r

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。