我用Integer.valueOf(身份证号).intValue()系统就会报错,将身份证号减小到10位及10位一下
就不会报错,怎样解决这个问题?身份证号是从textView获取的值。
身份证是18位的 而int的最大值 是明显不够用的 你可以使用long 去转换 还有就是身份证最后一位也有可能是X 要注意
你可以试试转为浮点型或者是double型
身份证号最后一位是有可能是X的,转成integer怕是会崩,,,,,而且在java中 integer范围在-2147483648 到2147483648
正如上面所说,身份证号码是不适合用整形或长整形的。应该用String类型。类似的还有电话号码。
运用正则表达式去判断身份证号是否正确!Android 身份证号码的验证
从textview gettext?怎么不直接写到button上,还是说你想获取身份证号然后set为button的text还是啥
new Integer.valueof()返回的是Integer的对象。
Integer.parseInt() 返回的是一个int的值。
new Integer.valueof().intValue();返回的也是一个int的值。
parseInt
public static int parseInt(String s, int radix) throws NumberFormatException
以第二个参数所指定基数将字符串参数分析为一个带符号的整数。除了第一个字符可以用 ASCII 的减号 '-' 来表示一个负值外,字符串中的字符必须是指定基数的数(由 Character.digit 是否返回非负值决定)。返回作为结果的整数值。
参数:
s - 包含整数的 String 。
radix - 使用的进制
返回值:
指定基数的字符串参数所表示的整数。
抛出: NumberFormatException
若该串不包含一个可分析的整数。
parseInt
public static int parseInt(String s) throws NumberFormatException
将字符串参数作为带符号十进制整数来分析。除过第一个字符为 ASCII 字符中减号 '-' 表示的负数,字符串中的字符都必须是十进制数。
参数:
s - 串。
返回值:
十进制参数表示的整数。
抛出: NumberFormatException
若该串不包含一个可分析的整数。
valueOf
public static Integer valueOf(String s, int radix) throws NumberFormatException
返回初始化为指定 String 值的新的 Integer 对象。若该 String 不能作为 int 分析,则抛出异常。
参数:
s - 待分析的字符串。
返回值:
新创建的 Integer ,将其以指定基数初始化为字符串参数所表示的值。
抛出: NumberFormatException
若 String不包含可分析的整数。
valueOf
public static Integer valueOf(String s) throws NumberFormatException
返回初始化为指定 String 值的新的 Integer 对象。若该 String 不能作为 int 分析,则抛出异常。假设基数为 10 。
参数:
s - 待分析的字符串。
返回值:
新创建的 Integer ,将其初始化为字符串参数所表示的值。
抛出: NumberFormatException
如果该串不包含一个可分析的整数。
static int parseInt(String s)
将字符串参数作为有符号的十进制整数进行分析。
static Integer valueOf(int i)
返回一个表示指定的 int 值的 Integer 实例。
static Integer valueOf(String s)
返回保持指定的 String 的值的 Integer 对象。
从返回值可以看出他们的区别 parseInt()返回的是基本类型int
而valueOf()返回的是包装类Integer Integer是可以使用对象方法的 而int类型就不能和Object类型进行互相转换
int zhuan=Integer.parseInt(chuan);
int zhuanyi=Integer.valueOf(chuan); 为什么你的程序返回值都可以用int来接收呢? 因为Integer和int可以自动转换
Integer i = 5; int k = i;像是这样表示是没有编译错误的
身份证那么多数字,而且不一定都是数字,就别用Integer了,你直接用String就好了
类型改下就好了 int有字数限制 改成long就好了。
虽然身份证号在形式上是数字,但是它不参与四则运算,所以本质上还是字符串。
你从来不会求身份证号的平均值或者最大值,对吧。
身份证号位数比较多,int型放不下,另外身份证号最好使用String类型,相信你也经常看到有的同学身份证使用18位的身份证号,且有的最后一位检验位是X,另外,有的同学的一代身份证号是15位,这些都需要注意,可以使用正则表达式判定一下
JAVA常用类之——BigInteger和BigDecimal
Java在java.math包中提供的API类BigDecimal,用来对超过16位有效位的数进行精确的运算
看这里创建对象你就知道且什么了
//1. 创建两个大数对像
BigDecimal bi1 = new BigDecimal ("21474836483424324132132.2341342143214321");
BigInteger bi2 = new BigInteger("214748364888888888888888");
还是用String类型吧
直接用身份证的字符串做ID就行。
可以尝试 tag 代替ID 但是tag会降低查询效率