weixin_41125671
小白_qq
2018-01-02 01:18
采纳率: 75%
浏览 1.4k

Android 想要将身份证号当做id赋给自定义的button,拿到的身份证号是string类型

我用Integer.valueOf(身份证号).intValue()系统就会报错,将身份证号减小到10位及10位一下
就不会报错,怎样解决这个问题?身份证号是从textView获取的值。

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

15条回答 默认 最新

  • Naide_S
    nades 2018-01-02 01:44
    已采纳

    身份证是18位的 而int的最大值 是明显不够用的 你可以使用long 去转换 还有就是身份证最后一位也有可能是X 要注意

    点赞 评论
  • weixin_41125671
    小白_qq 2018-01-02 01:44

    你可以试试转为浮点型或者是double型

    点赞 评论
  • qq_25996219
    User_undefined 2018-01-02 01:47

    身份证号最后一位是有可能是X的,转成integer怕是会崩,,,,,而且在java中 integer范围在-2147483648 到2147483648

    点赞 评论
  • yang_deyuan
    yang_deyuan 2018-01-02 01:50

    正如上面所说,身份证号码是不适合用整形或长整形的。应该用String类型。类似的还有电话号码。

    点赞 评论
  • zgy621101
    紫风幻雪 2018-01-02 01:51

    运用正则表达式去判断身份证号是否正确!Android 身份证号码的验证

    点赞 评论
  • weixin_38782401
    迷路的麋鹿的路 2018-01-02 02:04

    从textview gettext?怎么不直接写到button上,还是说你想获取身份证号然后set为button的text还是啥

    点赞 评论
  • qq_36977897
    qq_36977897 2018-01-02 02:07

    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;像是这样表示是没有编译错误的

    点赞 评论
  • bdmh
    bdmh 2018-01-02 02:08

    身份证那么多数字,而且不一定都是数字,就别用Integer了,你直接用String就好了

    点赞 评论
  • hzmeibi
    AndroidWorkClub 2018-01-02 02:11

    类型改下就好了 int有字数限制 改成long就好了。

    点赞 评论
  • caozhy

    虽然身份证号在形式上是数字,但是它不参与四则运算,所以本质上还是字符串。
    你从来不会求身份证号的平均值或者最大值,对吧。

    点赞 评论
  • CSDN_Terence
    Terence Jing 2018-01-02 02:18

    身份证号位数比较多,int型放不下,另外身份证号最好使用String类型,相信你也经常看到有的同学身份证使用18位的身份证号,且有的最后一位检验位是X,另外,有的同学的一代身份证号是15位,这些都需要注意,可以使用正则表达式判定一下

    点赞 评论
  • Jeff_YaoJie
    香言香语 2018-01-02 02:37

    JAVA常用类之——BigInteger和BigDecimal

    Java在java.math包中提供的API类BigDecimal,用来对超过16位有效位的数进行精确的运算

    看这里创建对象你就知道且什么了
    //1. 创建两个大数对像

    BigDecimal bi1 = new BigDecimal ("21474836483424324132132.2341342143214321");

    BigInteger bi2 = new BigInteger("214748364888888888888888");

    点赞 评论
  • u011002076
    久晴天 2018-01-02 06:17

    还是用String类型吧

    点赞 评论
  • qq_35876492
    qq_35876492 2018-01-03 09:33

    直接用身份证的字符串做ID就行。

    点赞 评论
  • u010076059
    倔强的蜗牛在攀爬 2018-01-09 05:43

    可以尝试 tag 代替ID 但是tag会降低查询效率

    点赞 评论

相关推荐