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

取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 装 pytorch 的时候出了好多问题,遇到这种情况怎么处理?
  • ¥20 IOS游览器某宝手机网页版自动立即购买JavaScript脚本
  • ¥15 手机接入宽带网线,如何释放宽带全部速度
  • ¥30 关于#r语言#的问题:如何对R语言中mfgarch包中构建的garch-midas模型进行样本内长期波动率预测和样本外长期波动率预测
  • ¥15 ETLCloud 处理json多层级问题
  • ¥15 matlab中使用gurobi时报错
  • ¥15 这个主板怎么能扩出一两个sata口
  • ¥15 不是,这到底错哪儿了😭
  • ¥15 2020长安杯与连接网探
  • ¥15 关于#matlab#的问题:在模糊控制器中选出线路信息,在simulink中根据线路信息生成速度时间目标曲线(初速度为20m/s,15秒后减为0的速度时间图像)我想问线路信息是什么