String转为Int 面试题

本文详细探讨了将String类型转换为Int类型的复杂性,包括处理空字符串、非数字字符、正负号、边界条件等问题,并提供了一段完整的Java代码示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

String转为Int是一个比较常见的面试题,但是要写出严谨的代码,要考虑的细节还是很多。主要有以下几点:
1.String为空的时候;
2.String无法转换为有效的Int的时候(包含非数字字符的时候怎么区分);
3.String中包含’+‘或者’-‘的情况;
4.String只包含’+‘或者’-'的情况;
5.边界条件,最大正整数与最小负整数。

下面给出完整代码如下所示:

public class StringToIntUtils {

    public enum Status{
        Valid,Invalid
    }

    private static Status status = Status.Valid;

    public static int StrToInt(String str){

        status = Status.Valid;
        long num = 0;

        if(!TextUtils.isEmpty(str)){

            int sign = 1; //标识正负
            int index =0;

            char[] arr = str.toCharArray();

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

            if(str.length()>index){
                for (;index<arr.length;index++){
                    if(arr[index]<='9'&&arr[index]>='0'){
                        int number = charToInt(arr[index]);
                        num = num *10 +number*sign;

                        if(num<Integer.MIN_VALUE||num>Integer.MAX_VALUE){
                            num = 0;
                            status = Status.Invalid;
                            break;
                        }
                    }else {
                        num = 0;
                        status = Status.Invalid;
                        break;
                    }
                }
            }else {
                num = 0;
                status = Status.Invalid;
            }

        }else status = Status.Invalid;
        return (int) num;
    }

   private static int charToInt(char cha){
        return cha - '0';
   }

}

参考链接:
https://www.jianshu.com/p/18c3795300c7

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值