본문 바로가기

Java/본격 Java 스트링

[Java] String 메소드 활용 2

String에서 배운 메소드를 활용해보려고합니다.

주민등록번호가 주어졌을때, 생년월일 생성과 성별 구분을 해보겠습니다.

.

.

예제1

접근방법

 - 1900년대생인지 2000년대생인지 구분하기위해 뒷자리 첫번째 숫자를 가져옵니다.

 - 그래서 char c = str.charAt(str.length() - 7)를 사용합니다. (뒷자리는 항상 7자리라는 고정)

 - 1,2 일 경우 1900년대생, 3,4일 경우 2000년대생으로 구분합니다.

 - substring으로 년도 두자리, 생월 두자리, 생일 두자리를 나눠서 출력합니다.

 - 성별을 구별하는 것은 1,3 일 경우 남자, 2,4 일 경우 여자를 if문을 통해 출력합니다.

class StringEx2 
{
	public static void main(String[] args) 
	{
		String str1 = "880515-1234567";
		String str2 = "8906052234567";
		String str3 = "001215-3234567";
		String str4 = "0110054234567";

		// 주민등록번호를 이용하여 생일(yyyy-mm-dd) 출력
		printBirth(str1);
		printBirth(str2);
		printBirth(str3);
		printBirth(str4);

		// 주민등록번호를 이용하여 성별(남, 여)를 출력
		
		printGender(str1);
		printGender(str2);
		printGender(str3);
		printGender(str4);
	}

	public static void printBirth(String str){
		char c = str.charAt(str.length() - 7);

		String year = str.substring(0, 2);

		if (c == '1' || c == '2'){ year = 19 + year; }
		else{ year = 20 + year; }

		String month = str.substring(2, 4);
		String day = str.substring(4, 6);

		System.out.println(year + "-" + month + "-" + day);
	}

	public static void printGender(String str){
		char c = str.charAt(str.length() - 7);
		
		if (c == '1' || c == '3')	System.out.println("남자");
		else			System.out.println("여자");
		// 작은따옴표는 char 값을 표현
	}
}

.

.

예제2

접근방법

 - 예제1과 살짝 다른 방법이지만 앞자리가 6자리라는 걸 생각해서 하이픈이 있는경우와 없는 경우를 나눠서 생각합니다.

출력방법은 예제1과 비슷합니다.

class StringEx2Practice 
{
	public static void main(String[] args) 
	{
		String str1 = "880515-1234567";
		String str2 = "8906052234567";
		String str3 = "001215-3234567";
		String str4 = "0110054234567";

		// 주민등록번호를 이용하여 생일(yyyy-mm-dd) 출력
		printBirth(str1);
		printBirth(str2);
		printBirth(str3);
		printBirth(str4);

		// 주민등록번호를 이용하여 성별(남, 여)를 출력
		
		printGender(str1);
		printGender(str2);
		printGender(str3);
		printGender(str4);
	}

	public static void printBirth(String str){
		char c;
		if (str.indexOf('-') >= 0){ c = str.charAt(7); }
		else { c = str.charAt(6); }

		int y = 19;
		if (c == '3' || c == '4') y = 20; // 조건 : c > '2' 으로도 가능함.

		String year = y + str.substring(0, 2);
		String month = str.substring(2, 4);
		String day = str.substring(4, 6);

		System.out.println(year + "-" + month + "-" + day);
	}

	public static void printGender(String str){
		char c;
		if(str.indexOf('-') >= 0) c = str.charAt(7);
		else c = str.charAt(6);

		char c = str.charAt(6);
		if (str.length() == 14) c = str.charAt(7);
		//글자개수 14자 이후로 성별구분
		
		if (c == '1' || c == '3')	System.out.println("남자"); //c % 2 == 1 으로도 가능함.
		else			System.out.println("여자");
		// 작은따옴표는 char 값을 표현
	}
}
728x90
반응형

'Java > 본격 Java 스트링' 카테고리의 다른 글

[Java] String 메소드 활용 3  (0) 2020.06.26
[Java] String 메소드 활용1  (0) 2020.06.26
[Java] String 메소드  (0) 2020.06.26
[Java] 오버로딩(overloading)  (0) 2020.06.26