//这个程序 不是很完整 主要作用就是输入身份证号,判断身份证号是否合法 (只需要看够不够十八位,尾数是数字或者x)如果合法 输出出生年月日 性别 年龄 现在这个程序 判断尾数那有问题 计算年龄没写出来 能不能帮优化一下 把没写的写上 有错的地方改一下
package com;
import java.util.*;
public class ID {
private static Scanner scanner;
// 入口
public static void main(String[] args) {
scanner = new Scanner(System.in);
System.out.println("请输入您的身份证号:");
String idNumber = scanner.nextLine();
// 判断身份证号是否合法
Boolean idLegit = judgeId(idNumber);
if(idLegit){
String birthday = getBirthday(getStr(idNumber,6,13));
String gender = getGender(getStr(idNumber,16,16));
String age = getAge(getStr(idNumber,6,9));
System.out.println("您的生日:" + birthday);
System.out.println("您的性别:" + gender);
System.out.println("您的年龄:" + age);
}else System.out.println("身份证号有误!!!!");
}
//判定身份证号是否正确 正确的为18位 末尾为数字或者字母x
public static Boolean judgeId(String id){
if(id.length() != 18)
return false;
char[] end = {'1','2','3','4','5','6','7','8','9','0','x'};
boolean sum = true;
for(int i =0;i<end.length;i++){
if(end[i] != getStr(id,17, 17).charAt(0)){
sum = true;
}else{
sum = false;
}
}
return sum;
}
public static String getStr(String str,int a,int b){
b++;
return str.substring(a,b);
}
//提取出生年月日
public static String getBirthday(String num){
String y = getStr(num,0,3);
String m = getStr(num,4,5);
String d = getStr(num,6,7);
return y + "-" + m + "-" + d;
}
//判断性别
public static String getGender(String num){
int gendetNum = num.charAt(0) - '0';
return gendetNum % 2 == 0 ? "女" : "男";
}
//计算年龄,这个代码不完整
public static String getAge(String num){
String age = getStr(num,0,3);
int new_age = Integer.valueOf(age);// 强制转换
Calendar date = Calendar.getInstance();
String year = String.valueOf(date.get(Calendar.YEAR));
int new_year = Integer.valueOf(year);
return age;
}
}