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
取身份证17位,应该为
int bt = IDnum.charAt(17);
角标从0开始,g = IDnum.charAt(0);
17位则为 IDnum.charAt(17)
以上报错: java.lang.StringIndexOutOfBoundsException
为数组越界, 长度为19,角标19为第20位
字符串取第17位,是charAt(17),不是19。这个最后一位一定是数字吗?另外身份证号一定这么长嘛?不是还有15位身份证号的嘛?
越界了
import java.util.Scanner;
public class IfPractice {
public static void main(String[] args) {
/*
* 1.录入身份证号 2.判定性别 3.判定个人年龄是否能结婚(中间录入年龄) 4.判定双方是否都到达法定结婚年龄 5.输出结果:能否结婚
*/
Scanner input = new Scanner(System.in);
// 录入身份证号
System.out.print("请输入身份证号(前面加一个g)");
// 取身份证号第17位(奇数为男性,偶数为女性)
System.out.println(input.next().charAt(17) % 2 == 1 ? "您是男性" : "您是女性");
input.close();
}
}