在线报名
报名热线:400-0919-097
在线客服
新闻中心
当前位置:学码思 > 新闻中心 >
Java 复杂计算器的实现
编辑:尔阳   浏览时间:2025-02-14 14:07

仍旧二次有公司口试上机,干那个问题,底下道1停杀青思绪。

条件:赋予的字符串是规范能够干无效运算的字符串,只包括添加趁除战数字,个中最前战末了是数字思绪:先把字符串以运算符停止宰割,把数字战运算符搁到集中中。而后先干趁除运算,原因趁除必需先干。而后干添加谋略,末了挨印了局。备注:那里仅仅告终思绪,不SWING完毕。底下策动:30*1+4*2*10-10+40/20的了局。实行代码以下,关头中央带有注脚:

packagetest;importjava.util.ArrayList;importjava.util.List;/***庞杂盘算器*@author崔素强*/publicclassCalculator{publicstaticvoidmain(String[]args){//划定规矩,只可呈现数字战添加趁除标记,最前战末了皆是数字,便字符串能无效估量的Stringtext="30*1+4*2*10-10+40/20";//推算内乱容支解List<String>numList=newArrayList<String>();intsplitIndex=0;for(inti=0;i<text.length();i++){charc=text.charAt(i);if(c=='+'||c=='-'||c=='*'||c=='/'){numList.add(text.substring(splitIndex,i));numList.add(c+"");splitIndex=i+1;}}//由于应用标记干判定,添加前一名战标记,因此末了一名数字没有会正在轮回里处置numList.add(text.substring(splitIndex,text.length()));System.out.println("====盘据后====");for(inti=0;i<numList.size();i++){System.out.println(i+"->"+numList.get(i));}//先干趁除估量List<String>list=newArrayList<String>();Integertemp=null;//用于干趁除谋略姑且变量for(inti=1;i<numList.size();i+=2){//那里只轮回运算标记if("+".equals(numList.get(i))||"-".equals(numList.get(i))){if(null!=temp){//保存姑且变量,证实前方停止过趁除筹算list.add(temp.toString());temp=null;}else{list.add(numList.get(i-1));}list.add(numList.get(i));//把标记添入来if(i==numList.size()-2){//处置到末了时逢到曲交处置&nbsp;list.add(numList.get(i+1));}}elseif("*".equals(numList.get(i))){if(null==temp){temp=Integer.parseInt(numList.get(i-1))*Integer.parseInt(numList.get(i+1));}else{temp=temp*Integer.parseInt(numList.get(i+1));}if(i==numList.size()-2){//处置到末了时逢到曲交处置list.add(temp.toString());temp=null;}}elseif("/".equals(numList.get(i))){if(null==temp){temp=Integer.parseInt(numList.get(i-1))/Integer.parseInt(numList.get(i+1));}else{temp=temp/Integer.parseInt(numList.get(i+1));}if(i==numList.size()-2){//处置到末了时逢到曲交处置list.add(temp.toString());temp=null;}}}System.out.println("====趁除后====");for(inti=0;i<list.size();i++){System.out.println(i+"->"+list.get(i));}//再干添加推算Integersum=Integer.parseInt(list.get(0));//第一名没有会正在轮回里处置for(inti=1;i<list.size();i+=2){//那里只轮回运算标记if("+".equals(list.get(i))){sum+=Integer.parseInt(list.get(i+1));}elseif("-".equals(list.get(i))){sum-=Integer.parseInt(list.get(i+1));}}System.out.println("====终究值====");//挨印了局System.out.println(sum);}}

挨印了局:

====支解后====0->301->*2->13->+4->45->*6->27->*8->109->-10->1011->+12->4013->/14->20====趁除后====0->301->+2->803->-4->105->+6->2====终究值====102

个中分隔战添加谋划对比复杂,趁除运算须要应用姑且变量战干到末了时的判定,轻微庞杂。

推举您浏览更多相关于“ java盘算器庞杂计划器运算口试 ”的著作

地址:南京市科巷10号楼(邮政储蓄银行西北侧80米)  电话:400-080-3312

Copyright © 2024-2026  学码思推广专用站   http://www.xuems.net  .All Rights Reserved   网站地图  苏ICP备16033487号-3

分享到: