티스토리 뷰

※[JAVA] 주민등록번호 유효성 검사


○ 주민등록번호 검증 공식


  ① 마지막 자리를 제외한 앞자리 수를 규칙에 맞게 곱한다.


     123456 - 1234567(-> 주민번호)

     ******   ******

234567   892345 (-> 각 자리에 곱해질 수)

  

  ② 규칙에 맞게 곱셈 연산을 수행한 결과를 모두 더한다.

     

   ex) ㅇㅇㅇㅇㅇㅇ  ㅇㅇㅇㅇㅇㅇㅇ

       * * * * * *   * * * * * * *

   2 3 4 5 6 7   8 9 2 3 4 5

   ---------------------------------

   -> 14+15+0+30+6+35+8+72+12+6+4+15

==217

  

  ③ 더해진 결과물을 11로 나누어 『나머지』를 구한다.

     나머지 == 8


  ④ 11에서 나머지를 뺀 결과값을 구한다.

     

11 - 8 

11 - 0 ->1

10 - 0 

결과값이 2자리면 10으로 나머지를 구해준다.

  

  ⑤ ④번째 에서 처리한 연산 결과가 주민번호를 구성하는 마지막 숫자와

      일치하는지 비교한다.

  일치

  11 - 8 연산결과 3 == 주민번호 마지막 숫자 

  else             불일치 


import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.IOException;

public class Test101
{
	public static void main(String[] args) 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)
		{
			System.out.println(">> 입력 오류~~!!!");
			return;
		}

		// 확인
		//System.out.println(">> 자릿수 적합~!!!");

		for (int i=0; i<chk.length;i++)	// i->0 1 2 3 4 5 6 7 8 9 10 11 12
		{
			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(">> 정확한 주민번호~!!!");
		}
		else
		{
			System.out.println(">> 잘못된 주민번호~!!!");
		}
	}
}


※실행결과

주민번호 입력(xxxxxx-xxxxxxx) : 750615-1234567

>> 잘못된 주민번호~!!!

계속하려면 아무 키나 누르십시오 . . .



'국비지원Study > Java' 카테고리의 다른 글

[JAVA] 버블 정렬(Bubble Sort)  (0) 2019.03.10
[JAVA] 선택정렬(Selection Sort)  (0) 2019.03.10
[JAVA] 만년달력  (0) 2019.03.09
[JAVA] 가위바위보 게임  (0) 2019.03.09
[JAVA] 해당날짜의 요일구하기  (0) 2019.03.09
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/04   »
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 29 30
글 보관함