写一个算法,完成String to Integer的转换(考虑所有情况)

String to Integer总共需要考虑以下几种情况:

1.当字符串长度为0时,此时输出转换为0
2.字符串前后的空格需要去掉,这里可以直接使用trim()方法即可
3.如果出现形如"010a43"的字符串时,转换的整数以非数值之前的数值转换为准,也就是10
4.如果数值转换出现溢出,也就是大于Integer.MAX_VALUE,或者小鱼Integer.MIN_VALUE时,按照正负性对应输出最值

代码实现:

public class Main{
    public static void main(String[] args){
        String str = "...";
        StrTOInt(str);
    }
    public static int StrTOInt(String str){

        //1.字符串长度为零时输出0
        if(str.length() == 0)
            return 0;

        //2.去掉前后两端的空格
        str = str.trim();

        //3.判断数值的正负性
        int singal = 1;
        int index = 0;
        if(str.charAt(index++) == '-')
            singal = -1;

        //4.查找有效转换的数值
        int total = 0;
        while(index < str.length()){
            int digital = str.charAt(index) - '0';
            //如果到这不是数值了就跳出循环
            if(digital < 0 || digital > 9)
                break;
            //如果此时再进行转换操作会溢出,则直接返回对应的最值
            if(Integer.MAX_VALUE / 10 < total || Integer.MAX_VALUE /10 == total && Integer.MAX_VALUE % 10 < digital){
                if(singal == -1)
                    return Integer.MIN_VALUE;
                return Integer.MAX_VALUE;
            }
            //否则进行继续进行数据转换
            total = total * 10 + digital;
            index++;
        }
        return total * singal;
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值