身份证号码升位

15位身份证号码升位18位


package test;

public class RegNoUtil {
	public static void main(String [] args){
	    String regNo = "422822900816142";
	    System.out.println("15位身份证号:" + regNo);
	    regNo = fifteen2Eighteen(regNo);
		System.out.println("15位身份证号升位后:" + regNo );
		regNo = Eighteen2fifteen(regNo);
		System.out.println("18位身份证号降位后:" + regNo );
	}
	
	private static String Eighteen2fifteen(String regNo) {
		regNo = regNo.substring(0,6)+regNo.substring(8,17);
		return regNo;
	}

	private static String fifteen2Eighteen(String regNo) {
	    regNo = regNo.substring(0,6) + "19" + regNo.substring(6,15);
	    char [] regNoArr = regNo.toCharArray(); 
	    String [] str = {"7","9","10","5","8","4","2","1","6","3","7","9","10","5","8","4","2"};
	    int sum = 0;
	    for(int i = 0 ; i< regNoArr.length; i++){
	       sum += Integer.parseInt(String.valueOf(regNoArr[i])) *  Integer.parseInt(str[i]);
	    }
	    switch(sum%11){
	    case 0:
	         regNo += "1";
	         break;
	    case 1:
	         regNo += "0";
	         break;
	    case 2:
	         regNo += "X";
	         break;
	    case 3:
	         regNo += "9";
	         break;
	    case 4:
	         regNo += "8";
	         break;
	    case 5:
	         regNo += "7";
	         break;
	    case 6:
	         regNo += "6";
	         break;
	    case 7:
	         regNo += "5";
	         break;
	    case 8:
	         regNo += "4";
	         break;
	    case 9:
	         regNo += "3";
	         break;
	    case 10:
	         regNo += "2";
	         break;
	    default:
	         System.out.println("身份证升位出错。");
	         break;
	    }
	  return regNo;
	}
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值