整数字符串转成整数数值

【题目】
给定一个字符串str,如果str符合日常书写的整数形式,并且属于32位整数的范围,输出str所代表的整数值,否则输出无效。
【示例】
str="" : Invalid
str=“123” : 输出123
str=“012” : Invalid(不合书写习惯)
str=“123a” : Invalid
str=“2147483648” : Invalid(溢出)
【解答】
一、首先检查是有效的整数形式
1.如果str为空串,返回false。
2.如果str以’0’开头,但是str的长度大于1,如,str=="012",返回false。
3.如果str以’0’开头,但是str的长度为1,即str=="-",返回false。如果str的长度大于1,但是’1’的后面紧跟着“0”,如,str=="-0"或"-012",返回false。
4.如果str不以’-‘开头,也不以数字字符开头,例如,str=="a12",返回false。
5.如果经过步骤1~步骤4都没有返回,接下来检查str[1…N-1]是否都是数字字符,如果有一个不是数字字符,则返回false。
6.如果经过步骤5没有返回,说明str符合日常书写,检查是否有溢出。如果开头不为’-’,说明str所代表的整数为正数,此时如果str比"2147483647"按字典排序要大,则有溢出,返回false;同理如果str所代表的整数为负数,且str比"-2147483647"按字典排序大,则有溢出,返回false
7.经过步骤1~步骤6都没有返回,返回true

    public static boolean isValid(String str) {
   
        if (str == null || str.equals(""))
            return false;
        if (str.charAt(0) == '0' && str.length() > 1)
            return false;
        if (str.charAt
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值