package String; /** * @Title: atoi.java * @Package String * @Description: TODO * @author nutc * @date 2013-8-28 上午10:33:33 * @version V1.0 */ public class atoi { public static void main(String args[]) { atoi l = new atoi(); String s = "345e980"; System.out.println(Integer.MAX_VALUE); System.out.println(Integer.MIN_VALUE); System.out.println(" "+l.atoi(s));// PINALSIGYAHRPI System.out.println(" "+l.atoi2(s));// PINALSIGYAHRPI } public int atoi(String str) { int len = str.length(); if (len == 0) return 0; int ret = 0; boolean signal = true; int i = 0; while (i < len && str.charAt(i) == ' ') { //空格 i++; } if (i < len && str.charAt(i) == '-') { signal = false; i++; } else if (i < len && str.charAt(i) == '+') { //注意还有+号! i++; } else if (str.charAt(i) < '0' || str.charAt(i) > '9') return 0; int count = 0; while (i < len && str.charAt(i) >= '0' && str.charAt(i) <= '9') { if (signal) {//MAX 2147483647 MIN -2147483648 if (count == 10 || ret>214748364 || (ret == 214748364 && str.charAt(i) >= '7')) return Integer.MAX_VALUE; ret = ret * 10 + (str.charAt(i) - '0'); } else { if (count == 10 || (ret<-214748364 ) || ( (ret == -214748364 && str.charAt(i) >= '8') )) return Integer.MIN_VALUE; ret = ret * 10 - (str.charAt(i) - '0'); } // System.out.println(ret); i++; count++; } return ret; } public int atoi2(String s) { //取巧的方式 s = s.trim(); long value = 0; //用long!! boolean isPositive = true; for (int i = 0; i < s.length(); i++) { if (i == 0 && (s.charAt(i) == '+' || s.charAt(i) == '-')) { if (s.charAt(i) == '-') { isPositive = false; } continue; } if (s.charAt(i) < '0' || s.charAt(i) > '9') break; value = 10 * value + s.charAt(i) - '0'; } value = isPositive == true ? value : value * -1; if (value < -2147483648) { return -2147483648; } else if (value > 2147483647) { return 2147483647; } else { return (int) value; } } }