주민번호 검증
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