digit() private méthode

private digit ( char par0, int par1 ) : int
par0 char
par1 int
Résultat int
Exemple #1
0
        public static long parseLong(String s, int radix)
        {
            if (s == null)
            {
                throw new NumberFormatException("null");
            }
            if (radix < Character.MIN_RADIX)
            {
                throw new NumberFormatException("radix " + radix +
                                                " less than Character.MIN_RADIX");
            }
            if (radix > Character.MAX_RADIX)
            {
                throw new NumberFormatException("radix " + radix +
                                                " greater than Character.MAX_RADIX");
            }
            long    result = 0;
            boolean negative = false;
            int     i = 0, len = s.length();
            long    limit = -Long.MAX_VALUE;
            long    multmin;
            int     digit;

            if (len > 0)
            {
                char firstChar = s.charAt(0);
                if (firstChar < '0') // Possible leading "+" or "-"
                {
                    if (firstChar == '-')
                    {
                        negative = true;
                        limit    = Long.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_VALUE
                    digit = 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);
            }
            return(negative ? result : -result);
        }
        public static int parseInt(String s, int radix)
        {
            /*
             * 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 new NumberFormatException("null");
            }
            if (radix < Character.MIN_RADIX)
            {
                throw new NumberFormatException("radix " + radix +
                                                " less than Character.MIN_RADIX");
            }
            if (radix > Character.MAX_RADIX)
            {
                throw new NumberFormatException("radix " + radix +
                                                " greater than Character.MAX_RADIX");
            }
            int     result = 0;
            boolean negative = false;
            int     i = 0, len = s.length();
            int     limit = -Integer.MAX_VALUE;
            int     multmin;
            int     digit;

            if (len > 0)
            {
                char firstChar = 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_VALUE
                    digit = 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);
            }
            return(negative ? result : -result);
        }