티스토리 뷰
반응형
웹서비스 관련된 과제를 하면서 작성했던 주민등록번호 유효성 검사에 대한 메소드를 구현해 보겠다.
먼저 주민등록번호는 유효성을 검사하는 일종의 공식(?) 이 있다.
차근차근 방법을 따라가 보자.
예를들어 주민등록번호가 123456-1234567 이라고 하면 계산방법은 다음과 같다.
1. 검증코드를 제외한 나머지 값들을 미리 지정된 값에 숫자를 하나씩 하나씩 모두 곱한다.
2. 각 자리수에서 곱한 숫자들을 모두 더한다.
3. 더한 결과를 11로 나누어 나머지를 구한다. (나머지 연산 %)
4. 11에서 나머지의 결과를 빼준다.
5. 연산을 통해 얻어진 값과 위에서 구했던 검증번호가 일치하는지 검사한다.
123456-1234567 이라는 주민등록번호에서 검증번호는 7이고, 연산 결과 얻은 값은 3이 된다.
따라서 두 값은 같지 않기 때문에 유효하지 않은 주민등록번호가 된다. 만약 이 두 값이 같다면 주민등록번호는 유효한 값이 되는 것이다.
위의 계산을 JAVA 코드로 만들어 보았다.
public String checkValidation(String ssFrontNumber, String ssBackNumber) {
String ssNum;
String errMsg = "You wrote wrong number";
String validMsg = "Your number is valid";
String invalidMsg = "Your number is invalid";
int inputData[] = new int[13];
int checkData[] = {2,3,4,5,6,7,8,9,2,3,4,5};
int multData[] = new int[12];
int sum = 0;
int validChkNum = 0;
ssNum = ssFrontNumber + ssBackNumber;
long temp;
temp = Long.parseLong(ssNum);
if(ssNum.length() != 13) {
return errMsg;
}
inputData[12] = (int)(temp % 10);
temp = temp / 10;
for(int i=11;i>=0;i--) {
inputData[i] = (int)(temp % 10);
temp = temp / 10;
}
for(int j=0;j<12;j++) {
multData[j] = inputData[j] * checkData[j];
sum = sum + multData[j];
}
sum = sum % 11;
if(!((sum == 0)||(sum == 1)))
{
validChkNum = 11 - sum;
}
if(validChkNum == inputData[12])
{
return validMsg;
}
else
{
return invalidMsg;
}
}
String 형식의 메소드로 인자는 주민등록번호의 앞번호와 뒷번호를 각각 따로 받는다.
인자로 받은 두 번호를 합쳐서 길이가 13자인지 먼저 검사를 하고,
배열에 저장시켜준다.
배열에 저장한뒤 위에서 이야기 했던 순서대로 연산을 해 나간다.
계산된 최종 값 (validChkNum)과 검증숫자 (inputData[12]) 가 같은지 비교한 뒤 결과를 string 타입으로 리턴시켜 주게 된다.
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- LGPay
- 크롬캐스트
- 무료복원
- 워치어베인 2nd 에디션
- 글자수 세기 프로그램
- chromecast2
- LG워치
- 워치어베인 2nd edition
- 에어팟안드로이드
- LG워치 어베인
- 커플여권지갑
- 자동차유리스톤칩
- 앞유리돌빵
- LGG6
- 가죽여권지갑
- Chromecast
- AR Stickers
- 증여세셀프신고
- 커플여권케이스
- 미성년자녀증여세
- 유리스톤칩
- 워치어베인
- 가죽여권케이스
- AR스티커
- 글로벌자동차유리
- 오드컨테이너
- LG페이
- 글자수 세는 프로그램
- 여권케이스
- 크롬캐스트2
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
글 보관함