(4)数字与溢出的处理。具体看代码
代码如下:
 public static int myAtoi(String str) 
    {
    	int sign=1,base=0,index=0,digit=0;
    	//空字符串的处理
    	if (str.length()==0)
		{
    		return 0;
		}
    	//空格的处理
    	while (str.charAt(index)==' '&&index<str.length())
		{
    		index++;
		}
    	//确定符号
    	if (str.charAt(index)=='+'||str.charAt(index)=='-')
		{
			sign=str.charAt(index)=='+'?1:-1;
			index++;
			if (sign==1&&str.charAt(index)=='-')
			{
				return 0;
			}
			if (sign==-1&&str.charAt(index)=='+')
			{
				return 0;
			}
		}
    	//确定基数
    	for (int i = index; i < str.length(); i++)
		{
    		char ch=str.charAt(i);
			if (ch<'0'||ch>'9')
			{
				break;
			}
			digit = ch - '0';
    		if (ch>='0'&&ch<='9')
			{
    			/*
    			 * 溢出的处理
    			 * (Integer.MAX_VALUE)/10<base,(Integer.MAX_VALUE)/10==base&&Integer.MAX_VALUE %10 <digit
    			 * 分别表示两种会出现溢出的情况,特别是第二种2147483648时
    			 */
				if ((Integer.MAX_VALUE)/10<base||(Integer.MAX_VALUE)/10==base&&Integer.MAX_VALUE %10 <digit)
				{
					if (sign==1)
					{
						return Integer.MAX_VALUE;
					}
					else
					{
						return Integer.MIN_VALUE;
					}
				}
				base=10*base+digit;
			}
		}
    	return base*sign;
    }leetcode——8 String to Integer (atoi)(自定义字符串转整型,如何避开各种奇葩输入)
原文地址:http://blog.csdn.net/zzc8265020/article/details/46618191