JAVA 배열, Calendar, 주민등록번호 예제

*** 검색어: nabiro, java, Calendar, 주민등록번호

[출처] (주)프리렉, 열혈강의 JAVA Programming, 김승현 저
 
import java.io.*;
import java.util.*;

public class P221 {
	public static void main(String[] ar) throws IOException{
		BufferedReader in = new BufferedReader(
				new InputStreamReader(System.in));
		String name = "";
		int[] jumin = new int[14];
		boolean right = false;
		
		System.out.print("이름 = ");
		name = in.readLine();
		
		do{
			right = false;
			System.out.print("주민번호(ex.111111-1111111) = ");
			for(int i=0; i < jumin.length; i++){
				jumin[i] = System.in.read() - 48;
			}
			System.in.read();
			System.in.read();
			
			if(jumin[2]*10 + jumin[3] > 12) {
				System.out.println("태여난 달은 12월 보다 클 수 없습니다.");
				continue;
			}
			else if(jumin[4] * 10 + jumin[5] > 31)
			{
				System.out.println("태여난 일은 31일 보다 클 수 없습니다.");
				continue;
			}
			else if(jumin[7] != 9 && jumin[7] != 0 &&
					jumin[7] != 1 && jumin[7] != 2 &&
					jumin[7] != 3 && jumin[7] != 4){
				System.out.print("성별을 나타내는 숫자는");
				System.out.println("9, 0, 1, 2, 3, 4 중 하나여야 합니다."); 
				continue;
			}
			
			int hap = 0, cre = 2;
			float temp = 0.0f, temp1 = 0.0f;
			for(int i=0; i < jumin.length - 1; i++){
				if(i == 6){
					continue;
				}
				hap += jumin[i] * cre;
				cre++;
				if(cre == 10){
					cre = 2;
				}
			}
			
			temp = (int)(hap / 11.0f) * 11.0f + 11.0f - hap;
			temp1 = temp - (int)(temp / 10.0f) * 10.0f;
			if(temp1 != jumin[13]){
				System.out.println("주민번호 검증 수가 올바르지 않습니다.");
				continue;
			}
			
			right = true;
		} while(!right);
		
		System.out.println();
		System.out.println("이름 = " + name);
		System.out.print("주민번호 = ");
		
		for(int i = 0; i < jumin.length; i++){
			if(i == 6){
				System.out.print("-");
				continue;
			}
			System.out.print(jumin[i]);
		}
		
		System.out.println();
		System.out.print("생년월일 = ");
		int year = 0, month = 0, day = 0;
		
		switch(jumin[7]){
		case 9: case 0: year = 1800; break;
		case 1: case 2: year = 1900; break;
		case 3: case 4: year = 2000; break;
		}
		
		year += jumin[0] * 10 + jumin[1];
		month = jumin[2] * 10 + jumin[3];
		day = jumin[4] * 10 + jumin[5];
		
		System.out.println(year + "년" + month + "월" + day + "일");
		System.out.print("성별 = ");
		System.out.println(jumin[7] % 2 == 0 ? "여성" : "남성");
		System.out.print("태어난 시도 = ");
		String area = "";
		
		switch(jumin[8]) {
		case 0: area = "서울"; break;
		case 1: area = "경기, 인천"; break;
		case 2: area = "부산"; break;
		case 3: area = "강원도"; break;
		case 4: area = "충청도"; break;
		case 5: area = "전라도"; break;
		case 6: area = "대구, 광주"; break;
		case 7: area = "경북, 경남"; break;
		case 8: area = "경남"; break;
		case 9: area = "제주도"; break;		
		}
		
		System.out.println(area);
		System.out.print("나이 = ");
		Calendar ca = Calendar.getInstance();
		int age = ca.get(Calendar.YEAR)- year + 1;
		System.out.print(age);
		System.out.println("세");
	}
}




'OS & Program > JAVA' 카테고리의 다른 글

JAVA class 예제  (0) 2010.08.03
JAVA 배열, 성적표 예제  (0) 2010.08.02
JAVA 배열 (int, String, float) 예제  (0) 2010.08.02
JAVA 배열 초기화 예제  (0) 2010.08.02
eclipse 실행 시에 매개 변수 전달하는 방법  (0) 2010.08.02

댓글

Designed by JB FACTORY