面试分享之String转为Int

Java将String转为Int


用Java写一段将字符串转成整数的函数


要求:不要调用str2int,parseInt等转换函数。按位读取字符串里的字符进行处理将字符串转化为整数,给定的输入一定是合法输入不包含非法字符,字符串头尾没有空格,考虑字符串开头可能有正负号。

/**
 * 字符串转数组
 *
 * @author shenjg
 * @date 2019/07/14
 **/
public class String2Int {
    public static void main(String[] args) {
        String str = "-623456";
        System.out.println(str2int(str));
    }

    /**
     * String类型转换为int
     *
     * @param string
     * @return
     */
    private static int str2int(String string) {
        // 空值判断
        if (StringUtils.isEmpty(string)) {
            return 0;
        }

        // 遍历数组位置
        int index = 0;
        // 正负标识
        int sign = 1;

        char[] arr = string.toCharArray();

        if (arr[0] == '-') {
            sign = -1;
            index++;
        }
        if (arr[0] == '+') {
            index++;
        }

        long result = 0L;
        for (; index < arr.length; index++) {
            int number = char2int(arr[index]);
            number = number * getDigit(arr.length - index, 1);
            result = result + number;
            if (result >= Integer.MAX_VALUE) {
                break;
            }
        }
        // 如果数据超限,则返回数据极限值
        if (result * sign <= Integer.MIN_VALUE) {
            System.out.println("数据非法,超出int最小数值");
            return Integer.MIN_VALUE;
        }
        if (result * sign >= Integer.MAX_VALUE) {
            System.out.println("数据非法,超出int最大数值");
            return Integer.MAX_VALUE;
        }
        return (int) result * sign;
    }

    /**
     * char类型转int
     *
     * @param cha
     * @return
     */
    private static int char2int(char cha) {
        return cha - '0';
    }

    /**
     * 获取位数
     *
     * @param length
     * @param digit
     * @return
     */
    private static int getDigit(int length, int digit) {
        if (length == 1) {
            return digit;
        }
        digit = digit * 10;
        return getDigit(length - 1, digit);
    }

}

你可能感兴趣的:(面试分享之String转为Int)