Java判断字符串是不是整数 | 您所在的位置:网站首页 › 11是不是整数 › Java判断字符串是不是整数 |
前言
本类所有方法均已加入cntool,可以选择使用本类方法也可以选择使用cntool以maven坐标方式调用,cntool介绍👉cntool介绍 实现思路在Java中,在使用Integer.parseInt(value)将字符串转为Integer类型时,如果没转成功,程序会出现异常,我们利用这个原理,可以将出现异常的归类为不是整数,未出现异常的归类为整数 代码 /** * 判断字符串是否是整数 */ public static boolean isInteger(String value) { try { Integer.parseInt(value); return true; } catch (NumberFormatException e) { return false; } } 问题使用这个方法,当整数值为2147483647程序正常返回true,但是一旦值大于2147483647返回的就会是false 2147483647时 //例 public static void main(String[] args) { String str = "2147483647"; System.out.println(isInteger(str)); } /** * 判断字符串是否是整数 */ private static boolean isInteger(String value) { try { Integer.parseInt(value); return true; } catch (NumberFormatException e) { return false; } }运行后返回结果 >2147483647时 //例 public static void main(String[] args) { String str = "2147483648"; System.out.println(isInteger(str)); } /** * 判断字符串是否是整数 */ private static boolean isInteger(String value) { try { Integer.parseInt(value); return true; } catch (NumberFormatException e) { return false; } }运行后返回结果 问题原因在Java中,Integer类取值和 int 类型取值一致,取值范围是从-2147483648 至 2147483647(-231至 231-1) ,包括-2147483648 和 2147483647。实例中2147483648超过了取值范围,所以产生了数字转换异常,异常如下 java.lang.NumberFormatException: For input string: "2147483648" at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65) at java.lang.Integer.parseInt(Integer.java:587) at java.lang.Integer.parseInt(Integer.java:615) at com.example.demo.OneDemo.isInteger(OneDemo.java:23) at com.example.demo.OneDemo.main(OneDemo.java:14) 解决思路换用long类型进行判断,long数据类型是64位、有符号的以二进制补码表示的整数;占8字节,最小值是-9,223,372,036,854,775,808(-2^63)最大值是9,223,372,036,854,775,807(2^63 -1) /** * 判断字符串是否是long类型 */ public static boolean isLong(String value) { try { Long.valueOf(value); return true; } catch (NumberFormatException e) { return false; } }使用以上代码即可解决~ |
CopyRight 2018-2019 实验室设备网 版权所有 |