参考了讨论里的高分答案和下边的一个比较简洁的答案

public int StrToInt(String str) {
            if(str == null ||str.length()==0 || str.trim().equals("")) return 0;
            char[] chars = str.trim().toCharArray();
            int res=0,flag=1,start=0,tmp=0;
            if(chars[0] == '-') {
                flag = -1;
                start = 1;
            }
            if(chars[0] == '+') start=1;
            for(int i =start;i < chars.length;i++){
                if(chars[i]>'9'||chars[i]<'0')
                    return 0;
                //当前个位数字
                int dight = (int)(chars[i]-'0');
                tmp = res*10+dight;
                //判断正数溢出
                if(flag ==1 && res>Integer.MAX_VALUE/10) return 0;
                if(flag ==1 && res*10>Integer.MAX_VALUE - dight) return 0;
                //判断负数溢出
                if(flag == -1 && res*flag < Integer.MIN_VALUE/10) return 0;
                if(flag == -1 && res*10*flag < Integer.MIN_VALUE + dight) return 0;
                res = tmp;
            }
            return flag* res;
        }