normal_luo 2021-08-13 08:18 采纳率: 66.7%
浏览 120
已结题

取string(内含long数字类型)类型的第17位数字出错

import java.util.*;
public class IfPractice{
        public static void main(String[] args){
            /* 1.录入身份证号 
               2.判定性别
               3.判定个人年龄是否能结婚(中间录入年龄)
               4.判定双方是否都到达法定结婚年龄
               5.输出结果:能否结婚
            */
        Scanner input = new Scanner(System.in);
        //录入身份证号
        System.out.print("请输入身份证号(前面加一个g)");
        //String IDnum =input.next();
        String IDnum = input.next();
        //取身份证号第17位(奇数为男性,偶数为女性)
        int bt = IDnum.charAt(19);
        System.out.println(bt);
        //取余
         int ba = bt%2;
        //判定男女
        if(ba==1){
            System.out.println("您是男性");
        }
        
        }
}



运行时出错:
C:\Users\1\java.code>java IfPractice
请输入身份证号(前面加一个g)g12345678910123456
Exception in thread "main" java.lang.StringIndexOutOfBoundsException: String index out of range: 19
at java.base/java.lang.StringLatin1.charAt(StringLatin1.java:48)
at java.base/java.lang.String.charAt(String.java:711)
at IfPractice.main(IfPractice.java:16)r

  • 写回答

3条回答 默认 最新

  • Juice_Lover 2021-08-13 08:26
    关注

    取身份证17位,应该为
    int bt = IDnum.charAt(17);
    角标从0开始,g = IDnum.charAt(0);
    17位则为 IDnum.charAt(17)

    以上报错: java.lang.StringIndexOutOfBoundsException
    为数组越界, 长度为19,角标19为第20位

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 8月21日
  • 已采纳回答 8月13日
  • 创建了问题 8月13日