参考了讨论里的高分答案和下边的一个比较简洁的答案
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; }