728x90
반응형
◎주민등록번호 검증 공식
1. 마지막 자리를 제외한 앞자리 수를 규칙에 맞게 곱한다.
123456 - 1234567(=> 주민번호)
-------- --------
234567 892345(-> 각 자리에 곱해질 수)
2. 규칙에 맞게 곱셈 연산을 수행한 결과를 모두 더한다.
7 5 0 6 1 5 - 1 8 6 2 1 3 3
* 2 3 4 5 6 7 8 9 2 3 4 5
----------------------------------1. 각 자리에 해당숫자를 곱한 후 2. 모두 더하기
= 14 + 15 + 0 + 30 + 6 + 35 + 8 + 72 + 12 + 6 + 4 + 15
= 217
3. 더해진 결과물을 11로 나눠 나머지를 구한다.
217 / 11 = 19(나머지 8)
4. 11에서 나머지를 뺀 결과 값이 주민번호를 구성하는 마지막 숫자와 일치하는지 비교한다.
11 - 8 = 3 = 주민번호 마지막 자리 3
5. 마지막 숫자와 같은 경우 유효한 주민등록번호이다.
public String checkJuminNumber() throws IOException {
// BufferedReader 클래스 인스턴스 생성
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
// 입력받은 주민번호
String str;
// 곱해지는 수 배열 구성
int[] chk = { 2, 3, 4, 5, 6, 7, 0, 8, 9, 2, 3, 4, 5 };
// - check~!!!
// 곱셈 연산 후 누적합
int tot = 0;
// 사용자에게 안내 메세지 출력 및 주민번호 입력받기
System.out.print("주민번호 입력(xxxxxx-xxxxxxx) : ");
str = br.readLine();
if (str.length() != 14) {
return ">> 입력 오류~~!!!";
}
// 확인
// System.out.println(">> 자릿수 적합~!!!");
for (int i = 0; i < chk.length; i++) {
if (i == 6)
continue;
tot += chk[i] * Integer.parseInt(str.substring(i, (i + 1)));
}
// -- 여기까지 수행하면 ① 과 ② 를 모두 끝낸 상황이며
// 규칙에 맞게 곱셈 연산을 수행한 결과를 모두 더한 값은
// 변수 tot 에 담겨있는 상태가 된다.
int su = 11 - tot % 11;
// -------
// ----------
// 확인
// System.out.println(su);
// --==>> 11
// 최종 결과 출력 이전에 추가 연산 필요~!!!
// -> su에 대한 연산 결과가 두 자리로 나올 경우
// 주민번호 마지막 자릿수와 비교할 수 없는 상황
if (su >= 10) {
su %= 10;
}
// -- 여기까지 수행하면 ③ 과 ④ 를 모두 끝낸 상황이며
// 최종 연산 결과는 변수 su 에 담겨있는 상황이 된다.
// 최종 결과 출력
if (su == Integer.parseInt(str.substring(13))) {
System.out.println(">> 정확한 주민번호~!!!");
return ">> 정확한 주민번호~!!!";
} else {
System.out.println(">> 잘못된 주민번호~!!!");
return ">> 잘못된 주민번호~!!!";
}
}
JAVA_ Test101_ 주민번호 유효성 검사 공식
Test101 주민번호 유효성 검사 공식 ※ 공식 123456-1234567 (주민번호) -------- -------- 234567 892345 (각 자리에 곱해질 수 『234567 892345』, 마지막수는 곱하지 않는다.) 규칙에 맞게 곱셈..
simuing.tistory.com
https://godjaejun.tistory.com/66
728x90
반응형
'Study > Java' 카테고리의 다른 글
Cloneable 인터페이스와 clone 메소드 (0) | 2021.12.29 |
---|---|
[Java] 유용한 라이브러리 (0) | 2021.12.14 |
[Java] StringUtils.isBlank 와 StringUtils.isEmpty 차이 (0) | 2021.12.13 |
[Java] Reflection (0) | 2021.11.08 |
[Java] JAR WAR 차이점 및 특징 (0) | 2021.11.05 |
댓글