计算18位身份证生日和性别,如果为15位转换成18位的身份证号
package job;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class li4_5 {
public static void main(String[] args) {
//使用读入流操作 读取字符串
BufferedReader in=new BufferedReader(new InputStreamReader(System.in)) ;
String n=new String();
try {
n=in.readLine();//读取一行字符串
} catch (IOException e) {
// TODO 自动生成的 catch 块
e.printStackTrace();
}
//将字符串载入SringBuffer 操作
StringBuffer s=new StringBuffer(n);
if(s.length()==18){
System.out.println("这是新的身份证编码");
System.out.println("你的出生日期为:"+s.substring(6, 14));//截取生日
String LL=s.substring(17);
int g=Integer.parseInt(LL);
// 判断是男是女 即将倒数第二位数 判断是 奇数还是偶数 偶数:男 奇数:女
if(g%2==0){
System.out.println("男");
}else{
System.out.println("女");
}
}else if(s.length()==15){ //否则重新计算15位转换成18位
String c=s.substring(6, 8);
int b= Integer.parseInt(c);
System.out.println(b);
if(b>48&&b<20){
s.insert(6, "19");
}else{
s.insert(6, "20");
}
int k=0;
//计算加权因子
for(int j=0;j<s.length();j++){
int pp=Integer.parseInt(String.valueOf(s.charAt(j)));
k+=pp*Math.pow(2, j);
}
int p=k%11;
//将 后缀位数因子 追加连接到字符串
String q=String.valueOf(p);
s.append(q);
System.out.println(s);
}else{
System.out.println("请输入正确的身份证号");
}
}
}