수행 목적 : Scanner의 입력함수와 조건문 및 Random클래스를 통한 주민번호 생성 로직 작성
간략 소개 : 주민번호는 출생년도와 출생월과 성별에 대한 내용을 포함하여 만들어지는 숫자로 된 체계입니다. 이에 2020년도 부터 생성 조건이 변경되었습니다. 이를 조건에 맞게 생성하는 프로그램을 작성해 보세요.
입력 값은 2020년도 이후로 입력한다는 전제로 작성해 주세요.
*주민등록번호 입력 방식은 아래 이미지 입력 방법이 아닌 안내 드리는 방법으로 입력해주세요.
예) 1999.01.01 경우 = 990101(yyMMdd)-1234567

필수 준수사항
- 주민등록번호 생성 로직에 맞게 주민등록번호 생성
- 입력값은 생년, 월, 일, 성별과 임의의 번호를 통해서 생성
- 임의번호는 Random함수의 nextInt()함수를 통해서 생성 (임의 번호 범위는 1 ~ 999999 사이의 값으로 설정)
import java.util.Random;
import java.util.Scanner;
/**
* 주민등록번호 생성 프로그램
*/
public class RRNGenerator {
public static void generate(String year, String month, String day, char gender) {
int genderNum = 0;
genderNum = (gender == 'm' ? 3 : 4);
StringBuilder sb = new StringBuilder();
sb.append(year.substring(2, 4))
.append(month)
.append(day)
.append("-")
.append(genderNum)
.append(new Random().nextInt(999999) + 1);
System.out.println(sb);
}
public static void main(String[] args) {
String year = "";
String month = "";
String day = "";
char gender = 0;
System.out.println("[주민등록번호 계산]");
Scanner sc = new Scanner(System.in);
System.out.print("출생년월일을 입력해주세요.(yyyy.MM.dd):");
String inputBirthDate = sc.next();
String[] birthDate = inputBirthDate.split("\\.");
year = birthDate[0];
month = birthDate[1];
day = birthDate[2];
System.out.print("성별을 입력해 주세요.(m/f):");
gender = sc.next().toLowerCase().charAt(0);
generate(year, month, day, gender);
sc.close();
}
}
수행 조건에서 이미지와 같이 출생년월일을 받는 것이 아닌
yyyy.MM.dd 형식으로 받으라고 했기때문에 해당 조건과 같이 사용자로 부터 생년월일을 받았다.
이후 split을 이용해 '.'을 기준으로 연도,월,일을 분리해서 문자열 배열에 담았다.
이후 성별을 m or f로 입력받았다.
toLowerCase()를 이용해 사용자가 대문자를 입력해도 소문자가 나오게 설정했다.
이후 generate 메소드에 연도, 월, 일, 성별을 넘겨 메소드를 실행한다.
조건에 2020년도 이후로 입력한다는 전제가 있기 때문에
남자라면 주민등록번호 뒷자리 시작을 3, 여자라면 4로 시작하게 했고,
Stringbuilder를 이용해 모든 값을 붙여줬다.
주민등록번호 뒷자리 7자리 중에 첫번 째 숫자는 성별을 의미하고
나머지 6자리는 임의의 숫자 값을 사용한다.
조건에서 Random클래스를 이용해서 1 부터 999,999 사이의 값으로 설정하라고 했기 때문에
Random().nextInt(999999) + 1을 이용해 임의의 숫자 값을 설정했다.
Random 클래스의 nextInt(n)는 0부터 n-1의 임의의 Int 값을 리턴하기 때문에
1부터 999,999 사이의 값을 설정하기 위해 nextInt(999999)에 + 1을 통해 1 부터 999,999 사이 값을 설정했다.
실행결과

2024.04.11 - [Zero-base] - 놀이동산 입장권 계산 프로그램 제로베이스 백엔드 스쿨 미니과제 3
2024.04.11 - [Zero-base] - 결제 금액 캐시백 계산 프로그램 제로베이스 백엔드 스쿨 미니과제 2
2024.04.10 - [Zero-base] - 콘솔 화면에 구구단 출력하기 제로베이스 백엔드 스쿨 미니과제 1
'📌Zero-base' 카테고리의 다른 글
| 가상 선거 및 당선 시뮬레이션 프로그램 제로베이스 백엔드 스쿨 미니과제 6 (0) | 2024.04.13 |
|---|---|
| 달력 출력 프로그램 제로베이스 백엔드 스쿨 미니과제 5 (0) | 2024.04.12 |
| 놀이동산 입장권 계산 프로그램 제로베이스 백엔드 스쿨 미니과제 3 (0) | 2024.04.11 |
| 결제 금액 캐시백 계산 프로그램 제로베이스 백엔드 스쿨 미니과제 2 (0) | 2024.04.11 |
| 콘솔 화면에 구구단 출력하기 제로베이스 백엔드 스쿨 미니과제 1 (0) | 2024.04.10 |