/* * 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; }