본문 바로가기

IT/java

주민번호 검증

public static void main(String[] args) {

String jumin = "123456-7890123";

String yy = jumin.substring(0, 2); //12

String mm = jumin.substring(2, 4); //34

String dd = jumin.substring(4, 6); //56

String sex = jumin.substring(7, 8); //7

String yyyy = yy;


/* if문

if(sex.equals("7")){

}

*/


// switch문

switch(sex) {

case "1" : 

case "2" : 

case "5" : 

case "6" : yyyy = "19" + yy; break;

case "3" : 

case "4" : 

case "7" : 

case "8" : yyyy = "20" + yy; break;

default : 

}

System.out.printf("%4s년 %2s월 %2s일\n", yyyy, mm, dd);

//성별구하기

int gender = Integer.parseInt(sex); //int형 변환

if(gender % 2 == 0) {

System.out.println("여자");

} else {

System.out.println("남자");

}

//검증

//방법1

/*

int [] ju = new int[13];

for (int i = 0; i < 6; i++) {

//String jumin을 char타입 ju[i]로 잘라서 int ju[i]에 입력

//잘라낸값이 int=49(char='1') 이므로 -48

ju[i] = jumin.charAt(i) - 48;

}

for (int i = 7; i < 14; i++) {

ju[i-1] = jumin.charAt(i) - '0';

}

*/

//방법2

int [] ju = new int[13];

String [] jum = jumin.split("-"); //주민번호에서 '-' 를 기준으로 앞뒤값을 배열 0, 1에 삽입 "123456" "7890123"

String [] sju1 = jum[0].split(""); //배열의 값을 한자씩 잘라서 배열에 삽입 "1" "2" "3" "4" "5" "6" ...

String [] sju2 = jum[1].split("");

for (int i = 0; i < sju1.length; i++) {

ju[i] = Integer.parseInt(sju1[i]);

}

for (int i = 0; i < sju2.length; i++) {

ju[i+6] = Integer.parseInt(sju2[i]);

}

// int [] ju = {1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 1, 2, 3};

int [] m = {2, 3, 4, 5, 6, 7, 8, 9, 2, 3, 4, 5};

int hap = 0;

for (int i = 0; i < m.length; i++) {

hap += ju[i] * m[i];

}

int chk = 11 - hap % 11; //hap=272, 11-8(272%11) = 3

if(chk >= 10) {

chk = chk - 10;

}

if(chk == ju[12]) {

System.out.println("정확한 주민번호");

} else {

System.out.println("틀린 주민번호");

}


} //main end

'IT > java' 카테고리의 다른 글

JDK 설치확인  (0) 2017.07.05
Eclips Window Builder 설치  (0) 2017.06.12
printf, println, print 차이  (0) 2017.05.22
switch 예제  (0) 2017.05.22
eclipse 설치 (Java EE)  (0) 2017.05.15