java加减_Java 实现 字符串直接加减

import java.util.*;

public class testMy{

public static void main(String[] args){

double out=0;

node prt=null;

node rt=null;

ArrayList myNode=new

ArrayList();

ArrayList obj=new

ArrayList();

ArrayList obj2=new

ArrayList();

String[] p={"+","-","*","/"};

String s="1+2-3*4/5-6+7*8+9";

obj.add(new node(s,prt,1));

obj2.add(new node(s,prt,0));

for(int i=0;i

obj.clear();

obj.addAll(obj2);

obj2.clear();

Iterator its =

obj.iterator();

while(its.hasNext()){

node tempnode=its.next();

String temp=tempnode.data;

String[] tempArray=temp.split("\\"+p[i]);

if(tempArray.length>1){

rt=new node(p[i],tempnode.parentNode,0);

myNode.add(rt);

for(int j=0;j

if(tempArray[j].matches("\\d+"))

myNode.add(new

node(tempArray[j],rt,Integer.parseInt(tempArray[j])));

else{

obj2.add(new node(tempArray[j],rt,0));

}

}

}

else

obj2.add(tempnode);

prt=rt;

}

}

for(int k=p.length-1;k>=0;--k){

for(int i=0;i

node x =myNode.get(i).parentNode;

if((x!=null)&&(x.data.equals(p[k]))&&(myNode.get(i).used==false)){

out=myNode.get(i).result;

for(int j=i+1;j

if((x==myNode.get(j).parentNode)){

if(p[k].equals("/")){

out=out/myNode.get(j).result;

myNode.get(j).used=true;

x.result=out;

}

else if(p[k].equals("*")){

out=out*myNode.get(j).result;

myNode.get(j).used=true;

x.result=out;

}

else if(p[k].equals("-")){

myNode.get(j).used=true;

out=out-myNode.get(j).result;

x.result=out;

}

else if(p[k].equals("+")){

myNode.get(j).used=true;

out=out+myNode.get(j).result;

x.result=out;

}

}

}

}

}

}

System.out.println(myNode.get(0).result);

}

}

class node{

node parentNode;

public String data;

double result;

boolean used;

node(String data,node parentNode,double result){

this.data=data;

this.parentNode=parentNode;

this.result=result;

this.used=false;

}

String getData(){

return data;

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值