把字符串转换为整数

题目描述

将一个字符串转换成一个整数(实现Integer.valueOf(string)的功能,但是string不符合数字要求时返回0),要求不能使用字符串转换整数的库函数。 数值为0或者字符串不是一个合法的数值则返回0。

解题思路

首先判断第一位数字是不是符号,然后计算每一位的值,同时要考虑溢出的情况(分为正数的溢出和负数的溢出)

代码

  public static int StrToInt(String str) {
        if(str.trim().length() == 0){
            return 0;
        }
        int flag = 1;//无符号和符号位为+

        char firstChar = str.charAt(0);
        if(firstChar == '+' || firstChar == '-'){ //有符号
            if(firstChar == '-') flag = -1;
            str = str.substring(1);//去掉符号 算法可以简单一些
        }else if(firstChar >'9' || firstChar<'0'){ //不是数字
            return 0;
        }

        char [] array = str.toCharArray();
        int numberLength = array.length;

        Integer number = 0;

        for (int i = numberLength -1; i >=0; i--) {
            //是数字
            if(array[i]>='0' && array[i]<='9'){
                //分别计算 个位->十位->百位->...
                int newValue = (array[i] -'0') *  (int)Math.pow(10,numberLength - i -1);
                number += flag * newValue;
                //如果符号是+,计算的结果<0,溢出;如果符号是-,计算的结果>0,溢出
                if((flag == 1 && number<0) || (flag == -1 && number >0))
                    return 0;
            }else{
                return 0;
            }
        }
        return number;
    }

猜你喜欢

转载自blog.csdn.net/yjw123456/article/details/81111386
今日推荐