java类型转换报错

public static int calPoints(String[] ops) {
        String[] res = new String[ops.length];
        int n = 0,len = 0,ans = 0;
        for(int i = 0;i < ops.length;i++){
            switch(ops[i]){
                case "+":
                    res[n++] = String.valueOf(Integer.parseInt(res[n-1] + Integer.parseInt(res[n-2])));
                    len ++;
                    break;
                case "D":
                    if(res[n-1].length() == 0) break;
                    res[n++] = String.valueOf(2*Integer.parseInt(res[n-1]));
                    len ++;
                    break;
                case "C":
                    res[--n] = null;
                    len --;
                    break;
                default:
                    res[n++] = ops[i];
                    len ++;
            }
        }
        for(int i = 0;i < len;i++){
            ans += Integer.parseInt(res[i]);
        }
        return ans;
    }

请问大家上面代码case"D"中的res[n++] = String.valueOf(2*Integer.parseInt(res[n-1]));为什么报错,我甚至在上面加了个判空条件,还是不对,孩子人都傻了。

你这转的是啥,把你的需求描述一下

建议输出一下res[n-1] 

如果判断不为空的话

第一种可能你字符串为'null'或者''空串就会继续往下走

第二种你的这个值不是纯数字