상세 컨텐츠

본문 제목

Exercise JAVA Class

JAVA Language

by mobile 2010. 10. 30. 18:33

본문

반응형

주민등록번호 검증 class

import java.io.*;
import java.util.*;

public class Round10_Ex08 {
    
    private BufferedReader in;
    private String name;
    private int[] jumin;
    private boolean right;
    
    public Round10_Ex08(){
        in = new BufferedReader(new InputStreamReader(System.in));
        name = "";
        jumin = new int[14];
        right = false;        
    }
    
    public void setName() throws IOException{
        System.out.print("이름 = ");
        name = in.readLine();
    }
    
    public void setJumin() throws IOException{
        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);
    }
    
    public void display(){
        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("세");
    }
    
    public static void main(String[] ar) throws IOException {    
        
    }
}
반응형

'JAVA Language' 카테고리의 다른 글

[JAVA] String Class - 01  (0) 2012.07.27
Editplus에서 컴파일하고 실행할 수 있도록 설정하는 방법  (0) 2011.06.25
JAVA Class와 Member  (0) 2010.10.30
JAVA CLASS  (0) 2010.10.24
JAVA Method  (0) 2010.10.23

관련글 더보기

댓글 영역