Graceful Java Programming 우아 한 Java 프로 그래 밍 의 신분증 인 코딩 검사
/**
* 15 , 18 ,
*
* 18 ,
* @param orgIDCardNo
* @return
* @throws ParseException
*/
public static String converse15DigitTo18Digit(String orgIDCardNo) throws ParseException{
if(orgIDCardNo == null){
throw new IllegalArgumentException(" null");
}
String buffer = orgIDCardNo.trim();
int numberLength = buffer.length();
// , 15 18 , “IllgalArgumentException ”
if(numberLength != 15 && numberLength != 18){
throw new ParseException(" " , 0);
}
//
if(numberLength == 15){
// 15
String birthDateStr = buffer.substring(6 , 12);
try {
new SimpleDateFormat("yyMMdd").parse(birthDateStr);
} catch (ParseException e) {
e.printStackTrace();
throw new ParseException(" " , 7);
}
// 15 18
buffer = buffer.substring(0,6) + "19" + buffer.substring(6 , 15);
}else{
// 18
String birthDateStr = buffer.substring(6 , 14);
try {
new SimpleDateFormat("yyyyMMdd").parse(birthDateStr);
} catch (ParseException e) {
e.printStackTrace();
throw new ParseException(" " , 7);
}
// 17 , 18
buffer = buffer.substring(0,17);
}
// 18
char[] charArray = buffer.toCharArray();
int factor = 0;
for(int i = 18 ; i>=2 ; i--){
if(charArray[18 - i] < '0' || charArray[18 - i] > '9'){
throw new ParseException(" " , 18-i);
}
factor += (((int)Math.pow(2, (i-1))) % 11) *((charArray[18 - i] & 0xff) - 48);
}
factor %= 11;
switch(factor){
case 0 :
buffer += "1";
break;
case 1 :
buffer += "0";
break;
case 2 :
buffer += "X";
break;
case 3 :
buffer += "9";
break;
case 4 :
buffer += "8";
break;
case 5 :
buffer += "7";
break;
case 6 :
buffer += "6";
break;
case 7 :
buffer += "5";
break;
case 8 :
buffer += "4";
break;
case 9 :
buffer += "3";
break;
case 10 :
buffer += "2";
break;
}
// 18 ,
if(numberLength == 18
&& !buffer.equals(orgIDCardNo.trim())){
throw new ParseException(" " , 18);
}
return buffer;
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Is Eclipse IDE dying?In 2014 the Eclipse IDE is the leading development environment for Java with a market share of approximately 65%. but ac...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.