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 |