15位身份证号码升级18位的JAVA算法(转)

  • /** * 身份证号码15位转换18位* author:bianzhifu* * */  
  • public class demo {  
  •     final int[] wi = {7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2, 1};  
  •     int[] vi = {1, 0, 'X', 9, 8, 7, 6, 5, 4, 3, 2};  
  •     private int[] ai = new int[18];  
  •     public demo() {}  
  •     // 验证15位18位  
  •     public boolean Verify(String idcard) {  
  •         if (idcard.length() == 15) {idcard = uptoeighteen(idcard);   
  •     }      
  •     if (idcard.length() != 18)   
  •     {      return false;     
  •     }      
  •     String verify = idcard.substring(17, 18);   
  •     if (verify.equals(getVerify(idcard)))   
  •     {       
  •         return true;     
  •     }      
  •     return false;  
  •     }// 得到最后地位校验码  
  •     public String getVerify(String eightcardid) {   
  •         int remaining = 0;     
  •         if (eightcardid.length() == 18)   
  •         {      eightcardideightcardid = eightcardid.substring(0, 17);     
  •         }    if (eightcardid.length() == 17) {      
  •             int sum = 0;      
  •             for (int i = 0; i < 17; i++) {   
  •       String k = eightcardid.substring(i, i + 1);   
  •       ai[i] = Integer.parseInt(k);       
  •       }      for (int i = 0; i < 17; i++)   
  •       {        sumsum = sum + wi[i] * (ai[i]);  
  •       }      remaining = sum % 11;     
  •       }    return remaining == 2 ? "X" : String.valueOf(vi[remaining]);  
  •       }  
  •     // 15转18位  
  •     public String uptoeighteen(String fifteencardid) {   
  •         String eightcardid = fifteencardid.substring(0, 6);  
  •         eightcardideightcardid = eightcardid + "19";     
  •         eightcardideightcardid = eightcardid + fifteencardid.substring(6, 15);  
  •         eightcardideightcardid = eightcardid + getVerify(eightcardid);     
  •         return eightcardid;}  
  •     public static void main(String[] args){    
  •         System.out.print(new demo().uptoeighteen("身份证号"));  
  •         }  
  •           
  • 你可能感兴趣的:(java,算法,身份证,号码,休闲)