[java] 주민등록번호, 사업자 등록번호 유효성 검사

2024. 8. 15. 15:31·JAVA

20240813 수업

Integer.parseInt(Line.substring(1,2))
reference type  int 의 Wrapper Class  ⇒ class(Primitive type data):int type에 기능을 추가한 것 
Line.substring문자열을 정수형태로 변환
(시작위치, 끝위치(+1해줘야 함.)) substr이면 (시작위치, 개수)

 

자세하게 알고 싶다면 아래 링크로 접속↓↓

2024.08.15 - [개발자/JAVA] - [java] String 함수 총정리

 

 

<주민등록번호 검증 계산 방법>

  1. 주민번호 전체 13자리 중에서 맨 마지막 숫자는 검증코드이므로 제외하고, 12자리에 대해서 맨 앞 첫 번째 숫자부터 각각 순서대로 2, 3, 4, 5, 6, 7, 8, 9를 곱하고 9 다음에는 다시 2, 3, 4, 5 순으로 곱한다.
  2. 주민번호 12자리 각 숫자와 2~9를 곱한 결과를 모두 더한다.
  3. ​합계 숫자를 11로 나누어 나머지 값을 구한다.
  4. ​다시 11에서 위 계산한 나머지 값을 뺀 것이 바로 check digit이다. 단, 검증숫자가 10이 나오면 0으로, 11이면 1로 간주한다.
  •  01234567890123  :자릿수
  • "123456-7890123" :Line
  •  1234567890123    :jumin번호 []
  •  234567 892345     :m []
		Scanner in = new Scanner(System.in);
		System.out.println("주민번호입력(123456-7890123):");
		String Line = in.nextLine();
		
		int [] m   =new int[] {2,3,4,5,6,7,8,9,2,3,4,5};
		int [] jumin=new int[13];
		jumin[0]=Integer.parseInt(Line.substring(0,1));
		jumin[1]=Integer.parseInt(Line.substring(1,2));
		jumin[2]=Integer.parseInt(Line.substring(2,3));
		jumin[3]=Integer.parseInt(Line.substring(3,4));
		jumin[4]=Integer.parseInt(Line.substring(4,5));
		jumin[5]=Integer.parseInt(Line.substring(5,6));
		jumin[6]=Integer.parseInt(Line.substring(7,8));
		jumin[7]=Integer.parseInt(Line.substring(8,9));
		jumin[8]=Integer.parseInt(Line.substring(9,10));
		jumin[9]=Integer.parseInt(Line.substring(10,11));
		jumin[10]=Integer.parseInt(Line.substring(11,12));
		jumin[11]=Integer.parseInt(Line.substring(12,13));
		jumin[12]=Integer.parseInt(Line.substring(13,14));
		
		int sum=0;
		for (int i = 0; i < jumin.length-1; i++) {sum+=jumin[i]*m[i];}
		int chk=11-sum%11;
		
		//if(chk>10) chk=chk-10;
		chk=chk%10; //나머지가 10이나 11로 나와서
		
		if(chk==jumin[12])
			System.out.println("정확한 주민번호"+chk);
		else
			System.out.println("틀린 주민번호"+chk);

결과

 

<사업자 등록번호 검증 계산 방법 >

  1. 마지막 자릿수를 제외한 각 자릿수에 1,3,7,1,3,7,1,3,5를 각각 곱한 후, 모두 더한다.
  2. 마지막에서 두 번째 숫자에 5를 곱하고 10으로 나눠 나온 값의 몫을 1번의 결과에 더한다.
  3. 2번의 결과를 10으로 나누어 나머지만 취한다.
  4. 10에서 3번의 나머지를 뺀 수가 사업자 등록번호의 check digit이다.
 Scanner sc = new Scanner(System.in);
	    System.out.println("사업자 등록번호입력(110-81-41272):");
        String business = sc.nextLine();
		
		int [] s   =new int[] {
			1,3,7,1,3,7,1,3,5
		};
		int [] num=new int[10];
		for (int i = 0; i < 3; i++) {
			num[i]=Integer.parseInt(business.substring(i,i+1));
		}
		for (int y = 3; y < 5; y++) {
			num[y]=Integer.parseInt(business.substring(y+1,y+2));
		}
		for (int p = 5; p < 10; p++) {
			num[p]=Integer.parseInt(business.substring(p+2,p+3));
		}
		int sum1=0;
		for (int j = 0; j < num.length-1; j++) {
			sum1+=num[j]*s[j];
		}

		int bs=(sum1+num[8]*5/10)%10;
		int check=10-bs;
		
		if(check==num[9]) 
			System.out.println("정확한 번호"+check);
		else
			System.out.println("틀린 번호"+check);

결과

'JAVA' 카테고리의 다른 글

[java]정규식 (Regular Expression)  (0) 2024.08.17
[java] String 함수 총정리  (0) 2024.08.15
[java]배열 (Array)  (0) 2024.08.13
[java] 반복문 for 2  (0) 2024.08.12
[java] 반복문(for,while),등차∙피보나치∙등비 수열의 합  (0) 2024.08.12
'JAVA' 카테고리의 다른 글
  • [java]정규식 (Regular Expression)
  • [java] String 함수 총정리
  • [java]배열 (Array)
  • [java] 반복문 for 2
라텐느
라텐느
이제 막 개발을 시작한 초보가 개인공부를 하는 공간입니다.
  • 라텐느
    괴발개발
    라텐느
    • 개발자 (150)
      • HTML|CSS (14)
      • JAVA (29)
      • JAVACSCRIPT (15)
      • SQL (16)
      • 기타 (5)
      • JSP (2)
      • SPRING (13)
      • SPRING BOOT (6)
      • Git&GitHub (1)
      • 시행착오 (2)
      • 개발일지 (35)
        • GreenMiniProject1 (12)
        • GreenMiniProject2 (9)
        • GreenFinalProject (14)
      • Flutter (5)
      • 자격증 (1)
        • SQLD (1)
      • AWS (2)
      • Linux (1)
  • 블로그 메뉴

    • 홈
    • 방명록
    • 태그
  • 링크

    • GitHub
  • 공지사항

  • 인기 글

  • 태그

    링크
    일지
    CSS
    javascript
    태그
    부트캠프
    티스토리챌린지
    link
    db
    개발자
    input
    tag
    JS
    오블완
    SQL
    JQuery
    HTML
    AJAX
    java
    자기계발
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.0
라텐느
[java] 주민등록번호, 사업자 등록번호 유효성 검사
상단으로

티스토리툴바