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;
}
}