- public static intparseInt(String s,int radix)
- throws NumberFormatException
- {
- /*
- * WARNING: This method may be invoked early during VM initialization
- * before IntegerCache is initialized. Care must be taken to not use
- * the valueOf method.
- */
- if(s ==null) {
- throw newNumberFormatException("null");
- }
- if(radix < Character.MIN_RADIX) {
- throw newNumberFormatException("radix " + radix +
- " less than Character.MIN_RADIX");
- }
- if(radix > Character.MAX_RADIX) {
- throw newNumberFormatException("radix " + radix +
- " greater than Character.MAX_RADIX");
- }
- intresult = 0;
- booleannegative =false;
- inti = 0, len = s.length();
- intlimit = -Integer.MAX_VALUE;
- int multmin;
- int digit;
- if(len > 0) {
- charfirstChar = s.charAt(0);
- if(firstChar < '0') {// Possible leading "+" or "-"
- if(firstChar == '-') {
- negative =true;
- limit = Integer.MIN_VALUE;
- } else if(firstChar != '+')
- throw NumberFormatException.forInputString(s);
- if(len == 1)// Cannot have lone "+" or "-"
- throw NumberFormatException.forInputString(s);
- i++;
- }
- multmin = limit / radix;
- while(i < len) {
- // Accumulating negatively avoids surprises near MAX_VALUEdigit = Character.digit(s.charAt(i++),radix);
- if(digit < 0) {
- throw NumberFormatException.forInputString(s);
- }
- if(result < multmin) {
- throw NumberFormatException.forInputString(s);
- }
- result *= radix;
- if(result < limit + digit) {
- throw NumberFormatException.forInputString(s);
- }
- result -= digit;
- }
- } else {
- throw NumberFormatException.forInputString(s);
- }
- returnnegative ? result : -result;
- }
来源: http://www.bubuko.com/infodetail-1983183.html