欢迎来到天天文库
浏览记录
ID:21362679
大小:45.50 KB
页数:4页
时间:2018-10-21
《简单四则运算》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、publicclassclsCalculate{//calculate//1+(2+3)*(5+6)-(5-2)/2publicstringCalculateAll(stringstr){string[]sall=str.Split(newchar[]{'('});stringstmp="";while(sall.Length!=1){Listlsts=newList();string[]scpy=newstring[sall.Length-1];stmp=sall[sall.Length-1];//保存最后一个的值Array.Copy(sall,scpy,
2、scpy.Length);//算出最后一个括号的位置intist=string.Join("(",scpy).Length+1;intien=str.IndexOf(')',ist);stmp=stmp.PadLeft(ist+stmp.Length,'');//取出括号里的计算式stringst=str.Substring(ist,ien-ist);//保存本次不需计算的lsts.AddRange(scpy);sall=lsts.ToArray();//计算取出的式子并保存sall[sall.Length-1]+=CalculateValue(st);//保存括号)后面的内容sall[s
3、all.Length-1]+=stmp.Substring(ien+1);}returnCalculateValue(sall[0]);}publicstringCalculateValue(stringstr){//按四则运算符分隔成数组string[]sval=SplitCalculate(str);//进行乘法,除法运算sval=Calculate(sval);//进行加,减?算sval=CalculateAddSub(sval);returnsval[0];}privatestring[]SplitCalculate(stringstr){Listlst=newLi
4、st();string[]st=str.Split(newchar[]{'+','-','*','/'});intstart=0;for(intjdx=0;jdxlst=newList
5、();if(!IsNumber(st[0])){thrownewException("");}intval1;intval2;intval3=0;;intidx=0;//1+2/3*5for(idx=0;idx6、CompareTo("/")==0){if(val3!=0)val1=val3;elseval1=ToInteger(st[idx]);val2=ToInteger(st[idx+2]);val3=val1/val2;idx++;//lst.Add(val3.ToString());}else{if(val3!=0){lst.Add(val3.ToString());val3=0;}elselst.Add(st[idx]);lst.Add(st[idx+1]);idx++;}}if(val3!=0)lst.Add(val3.ToString());if(idx==st.Length-1)l7、st.Add(st[st.Length-1]);returnlst.ToArray();}privatestring[]CalculateAddSub(string[]st){Listlst=newList();if(!IsNumber(st[0])){thrownewException("");}intval1;intval2;intval3=0;;//1+2/3*5for(intidx
6、CompareTo("/")==0){if(val3!=0)val1=val3;elseval1=ToInteger(st[idx]);val2=ToInteger(st[idx+2]);val3=val1/val2;idx++;//lst.Add(val3.ToString());}else{if(val3!=0){lst.Add(val3.ToString());val3=0;}elselst.Add(st[idx]);lst.Add(st[idx+1]);idx++;}}if(val3!=0)lst.Add(val3.ToString());if(idx==st.Length-1)l
7、st.Add(st[st.Length-1]);returnlst.ToArray();}privatestring[]CalculateAddSub(string[]st){Listlst=newList();if(!IsNumber(st[0])){thrownewException("");}intval1;intval2;intval3=0;;//1+2/3*5for(intidx
此文档下载收益归作者所有