java实现身份证转换

作者在 2006-12-10 03:24:00 发布以下内容

import java.util.*;
public class Check
{

 public static void main(String[] args)
 {
  String code="420682840424253";
  if(!checkFormat(code))//如果其中含有字母则返回
   return;
  String six=code.substring(0,6);
  code=code.replaceFirst(six,six+"19");//得到17位
  char[] arr=code.toCharArray();
  int[] arrNumber=new int[arr.length];
  for(int i=0;i<arr.length;i++)//转换成int数组4 2 0 6 8 2 1 ...
  {
   arrNumber=Integer.parseInt(String.valueOf(arr));
  }
  int[] num17={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<arrNumber.length;i++)//分别相乘求和
  {
   sum+=num17*arrNumber;
  }
  //取余数
  String lastNumber=getLastNumber(sum%11);
  code+=lastNumber;
  System.out.println(code);
 }
 public static boolean checkFormat(String code)
 {
  char[] arr=code.toCharArray();
  for(int i=0;i<arr.length;i++)
  {
   if(!Character.isDigit(arr))
    return false;
  }
  return true;
 }
 public static String getLastNumber(int num)
 {
  switch (num)
   {
     case 0 :
       return "1";
    
     case 1 :
       return "0";
    
     case 2 :
       return "X";
    
     case 3 :
       return "9";
    
     case 4 :
     return "8";
    
     case 5 :
       return "7";
    
     case 6 :
       return "6";
    
     case 7 :
       return "5";
    
     case 8 :
       return "4";
    
     case 9 :
       return "3";
    
     case 10 :
       return"2"; 
     }
  return "";
 }
}

默认分类 | 阅读 1963 次
文章评论,共0条
游客请输入验证码