

您好,欢迎访问上海贝乐莉网络科技有限公司!
曾经二次有公司口试上机,干那个标题,底下道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){//处置到末了时逢到曲交处置 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打算器庞杂谋划器运算口试 ”的著作