public class StringToInt { public int atoi(String s) { long num = 0; int minus = 0; if(s==null) { return (int)num; } //过滤所有空格 s = s.trim(); for(int i = 0; i < s.length(); i++ ) { if(i==0 && s.charAt(i)=='-')//过滤首个字符是负号 { minus = 1; continue; } if(i==0 && s.charAt(i)=='+')//过滤首个字符是正号 { continue; } // if(Character.isWhitespace(s.charAt(i)))//过滤空格 // { // continue; // } if(s.charAt(i)>='0' && s.charAt(i)<='9')//正常情况 { num = num*10 + s.charAt(i)-'0'; //一定要在这里判断num的值,而不是放在最后,因为num值可能不仅超过int还超过long,在这里判断可以及时break if(num > Integer.MAX_VALUE) { num = minus > 0 ? Integer.MIN_VALUE : Integer.MAX_VALUE; return (int)num; } } else { break; } } if(minus == 1) { num = 0-num; } return (int)num; } public static void main(String[] args) { StingToInt t = new StingToInt(); System.out.println(t.atoi(" - 232a23"));//输出-232 } }