StringToInt(atoi) 字符串转换成整数

时间:2022-11-04 19:00:27
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
    }
}