hyeonga_code

Java_주민 번호 인증 확인 코드 작성 본문

Java

Java_주민 번호 인증 확인 코드 작성

hyeonga 2023. 10. 28. 06:59
반응형

' jumin.java' 클래스 생성
=====

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
package com.java.exam04;
 
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Calendar;
 
public class jumin {
 
    public static void main(String[] args) throws IOException {
        
        // 입력받을 준비
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        
        System.out.print("Name : ");
        String name = br.readLine();    // throws IOException
        
        // 주민번호를 계산을 위해 낱개로 받아옵니다.
        System.out.print("Number : ");
        int[] number = new int[13];
            /* 
                - br.readLine()으로 주민번호를 입력받은 경우 charAt()으로 받아올 수 있습니다.
                
            if(imsiJumin.length() != 13){
                System.err.println("Error");
                System.exit(0);    // 시스템 강제 종료
            }
            
            String imsiJumin = br.readLine();
            
            for(int i=0; i<imsiJumin.length(); i++) {
                number[i] = imsiJumin.charAt(i)-48;
            }
            
            */
        
        for(int i=0; i<number.length; i++) {
            number[i] = System.in.read() - 48;
        } // end for
 
        
        // Enter 제거
        System.in.read();
        System.in.read();
        
        /* 확인 코드
        System.out.println(name);
        for(int i=0; i<number.length; i++) {
            System.out.println("number[" + i + "] : " + number[i]);
        }
        */
        
        float hap = 0;
        float temp = 0;
        float total = 0;
        
        float cre = 2.f;
        for(int i=0; i<number.length-1; i++) {
            
            if(cre == 10.f) cre = 2.f;
            hap += number[i] * cre;
            cre++;
        }
        
        temp = 11.* (int)(hap/11.f) + 11.- hap;
        total = temp - 10.f*(int)(temp/10.f);
        
        if(number[number.length-1!= total) {
            System.out.println("Wrong number");
            return;
        }
        
        // if 문이 실행되지 않은 경우 정상적인 주민번호입니다.
        System.out.println();
        System.out.println("Name : " + name);
        
        // 연도 확인
        int year = 1900;
        switch(number[6]) {
        case 3:
        case 4: year = 2000break;
        case 9:
        case 0: year = 1800break;
        default : year = 1900break;
        }
        
        year = year + number[0]*10 + number[1];
        int mon = number[2]*10 + number[3];
        int day = number[4]*10 + number[5];
        System.out.println("Year : " + year);
        System.out.println("Month : " + mon);
        System.out.println("Day : " + day);
        
        System.out.println("Age : " + (Calendar.getInstance().get(Calendar.YEAR) - year));
        
        System.out.println("Gender : " + (number[6]%2 == 0"female":"male"));
        
        switch(number[7]) {
        case 0System.out.println("Location : 서울"); break;
        case 1System.out.println("Location : 경기"); break;
        case 2System.out.println("Location : 강원"); break;
        case 3System.out.println("Location : 충북"); break;
        case 4System.out.println("Location : 충남"); break;
        case 5System.out.println("Location : 전북"); break;
        case 6System.out.println("Location : 전남"); break;
        case 7System.out.println("Location : 경북"); break;
        case 8System.out.println("Location : 경남"); break;
        case 9System.out.println("Location : 제주"); break;
                    
            /*
                Name : correct
                Number : 1234567890123
                
                Name : hong
                Year : 1912
                Month : 34
                Day : 56
                Age : 111Gender : male
                Location : 경남
                
                
                Name : wrong
                Number : 4567891234567
                Wrong number
             */
        }
    }
}
반응형

'Java' 카테고리의 다른 글

Java_가위바위보 게임 코드 작성하기  (0) 2023.10.29
Java_마방진 코드 작성하기  (0) 2023.10.28
Java_70_네트워크  (0) 2023.10.28
Java_69_Assertion_단언  (0) 2023.10.27
Java_68_Collection_List  (0) 2023.10.27