8. String to Integer (atoi)

          /*
       * 8. String to Integer (atoi) 
       * 2016-4-12 by Mingyang 
       * 首先做这道题目想错了,想成有小数点怎么办,有e怎么办,所以有些事情还是越简单越好
       * 另外有这么几个点,第一,字母怎么办 3sda6就返回3,y7就返回0,也就是只要前面是数字,遇到字母就停
       * 遇到字母以后并不是返回0,而是break,这样可以跳出来返回现在的累积的值
       * 越界问题?正负号问题?空格问题?精度问题?
       */
     public static int myAtoi(String str) {
            str = str.trim();
            int len=str.length();
            boolean isNeg=false;
            if(len==0||str==null)
              return 0;
            int start=0;
            if(str.charAt(0)=='-'){
                isNeg=true;
                start=1;
            }else if(str.charAt(0)=='+'){
                isNeg=false;
                start=1;
            }
            long res=0;
            for(int i=start;i<len;i++){
                char temp=str.charAt(i);
                if(Character.isDigit(temp)){
                   long num=temp-'0';
                   res=res*10+num;
                   if(res>Integer.MAX_VALUE){
                       return isNeg?Integer.MIN_VALUE:Integer.MAX_VALUE;
                   }
                }else{
                    break;
                }
            }
            if(isNeg){
                res=-res;
            }
            return (int)res;
        }
原文地址:https://www.cnblogs.com/zmyvszk/p/5386211.html