这个跟先前的逆波兰式差不多,这次就吸取了上次的教训,switch中不用String进行判断,改用int类型。

  

public int evalRPN(String[] tokens) {
        Stack<String> stack = new Stack<String>();
        String s = "+-*/";
        int len = tokens.length,index=0;
        int i=1,first = 0,second = 0;
        if(len==0||len==2){
            return 0;
        }else if(len==1)
        {
            return Integer.valueOf(tokens[0]);
        }
        stack.push(tokens[0]);
        while(i<len){
            if(s.indexOf(tokens[i])!=-1){
                second = Integer.valueOf(stack.pop());
                first = Integer.valueOf(stack.pop());
                index = s.indexOf(tokens[i]);
                switch(index){
                    case 0: first = first+second;
                            break;
                    case 1: first = first-second;
                            break;
                    case 2: first = first * second;
                            break;
                    case 3: first = first / second;
                            break;
                }
               stack.push(String.valueOf(first));
            }else{
                stack.push(tokens[i]);
            }
            i++;
        }
        return Integer.valueOf(stack.pop());
    }