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日

悬赏问题

  • ¥15 根据以下文字信息,做EA模型图
  • ¥15 删除虚拟显示器驱动 删除所有 Xorg 配置文件 删除显示器缓存文件 重启系统 可是依旧无法退出虚拟显示器
  • ¥15 vscode程序一直报同样的错,如何解决?
  • ¥15 关于使用unity中遇到的问题
  • ¥15 开放世界如何写线性关卡的用例(类似原神)
  • ¥15 关于并联谐振电磁感应加热
  • ¥60 请查询全国几个煤炭大省近十年的煤炭铁路及公路的货物周转量
  • ¥15 请帮我看看我这道c语言题到底漏了哪种情况吧!
  • ¥60 关机时蓝屏并显示KMODE_EXCEPTION_NOT_HANDLED,怎么修?
  • ¥66 如何制作支付宝扫码跳转到发红包界面