身份证号码的第17位,身份证辨别性别,单号输出:“这是一位男士的身份证号码”,双号输出:“这是一位女士的身份证号码”

if(a.length()%1==0)
System.out.println(“这是一位男士的身份证号码”);

你的代码不是取17位进行判断的。

public class Main {
    public static void main(String[] args) {
        String number="362525199902085632";
        int num=number.charAt(16)-'0';
        if(num%2==0){
            System.out.println("这是一位女士的身份证号码");
        }else{
            System.out.println("这是一位男士的身份证号码");
        }
    }
}

img

如果a是身份证号码
if((a/10%10)%2==1)System.out.println(“这是一位男士的身份证号码”);

if((a.charAt(16) - '0')%2==1)
System.out.println(“这是一位男士的身份证号码”);


public class Test<T> {

    static void checkGender(String number) {
        boolean isMan;
        if (number.length() == 15) {
            isMan = (number.charAt(14) - '0') % 2 == 1;
        } else if (number.length() == 18) {
            isMan = (number.charAt(16) - '0') % 2 == 1;
        } else {
            System.out.println("身份证号格式错误!");
            return;
        }
        System.out.println("这是一位" + (isMan ? "男" : "女") + "士的身份证号码");
    }

    public static void main(String[] args) {
        checkGender("430303198812122222");
        checkGender("430303198812122232");
        checkGender("430303198812122272");
        checkGender("420721910403583");
        checkGender("420721910403588");
    }
}

测试输出示例:

img

身份证最后一位如果是0123456789你就直接用数字判断,n+1对2求余为0则为男,否则为女。
如果最后一位是x则是10为女。