将String转化为int

package com.utils;

public class Convert {
    private Convert() {

    }

    /**
     * 将输入的字符串转化为int类型
     * @param str 输入的字符串
     * @return 返回该字符串对应的int类型
     */
    public static int String2Int(String str) {
        if(str==null){
            throw new RuntimeException("不能为空");
        }
        long result=0;
        int i=0;
        boolean negative=false;
        long limit=Integer.MAX_VALUE;
        int len=str.length();
        //如果只有一位,检查是否是数字
        if(len==1){
            if(str.charAt(0)<48||str.charAt(0)>57)
                throw new RuntimeException("输入参数非法:"+str);
            else//是数字直接输出
                return str.charAt(0)-'0';
        }
        //以负号开始
        if(str.charAt(0)=='-'){
            negative=true;
            limit=(long)Integer.MAX_VALUE+1;
            i=1;
        }
        //以正号开始
        if(str.charAt(0)=='+'){
            i=1;
        }
        char[] chars = str.toCharArray();
        //计算string转int的值
        for(;i<chars.length;i++){
            //string中包含非法字符
            if(chars[i]<48||chars[i]>57){
                throw new RuntimeException("输入参数非法"+str);
            }
            result=result*10+(long)(chars[i]-'0');
            if(result>limit){
                throw new RuntimeException("超过int类型的范围:"+str);
            }
        }
        if(negative){
            return -(int)result;
        }
        return (int)result;
    }

    public static void main(String[] args) {
        //测试为空
//        System.out.println(Convert.String2Int(null));
        //测试以负号开始
        String str="-2147483648";
        System.out.println(Convert.String2Int(str));
        //测试以正号开始
        String str1="+2147483647";
        System.out.println(Convert.String2Int(str1));
        //测试以负号开始的超过边界
        String str2="-2147483649";
        //System.out.println(Convert.String2Int(str2));
        //测试以正号开始超过边界
        String str3="+21474836478";
        //System.out.println(Convert.String2Int(str3));
        //测试不带正号满足范围
        String str4="2147483647";
        //System.out.println(Convert.String2Int(str4));
        //测试不带正号超过范围
        String str5="2147483648";
        //System.out.println(Convert.String2Int(str5));
        //测试含有非法字符
        String str6="a12312";
        //System.out.println(Convert.String2Int(str6));
        //测试只有一个符号
        String str7="+";
        String str8="-";
        //System.out.println(Convert.String2Int(str7));
        //测试各位数
        String str11="1";
        //System.out.println(Convert.String2Int(str11));
        String str12="+1";
        //System.out.println(Convert.String2Int(str12));
    }


}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值