if와 if는 &&로 묶을 수 있고 if 조건에 '~이면'보다 '~가 아니면'을 사용하여 코드를 줄일 수 있다.
package com.bit.day09.am;
import java.util.Scanner;
public class Ex02 {
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
boolean boo = true;
String input=null;
do{
System.out.println("주민번호를 입력하세요>");
input=sc.nextLine();
if(input.length()==14){
if(input.charAt(6)=='-'){
boolean check=true;
for(int i=0; i<14; i++){
if(i!=6){
char ch=input.charAt(i);
if(ch<'0'||ch>'9'){check=false;} //숫자인지 아닌지 검사->숫자가 아니면 수행되지 않도록.
}
}
if(check){
boo=false; //모든 조건을 만족하면 false로 바꿔 나갈 수 있도록
}
}
}else{
System.out.println("형식에 맞춰입력하세요\n ex) 123456-1234567");
}
}while(boo);
int year=19;
char gender=input.charAt(7);
if(gender=='3' || gender=='4'){year++;}
String year1=year+input.substring(0,2);
year=Integer.parseInt(year1);
int age=2020-year+1;
if(gender=='1' || gender=='3'){
gender='남';
} else if(gender=='2' || gender=='4'){
gender='여';
}
System.out.println("당신은 " + age + "세" + gender + "입니다.");
}
}
toCharArray() 사용
package com.bit.day09.am;
public class Ex03 {
public static void main(String[] args) {
String input="200101-3234567";
char[] arr=input.toCharArray(); //String을 캐릭터 배열로 바꾸기
// '2'-'0'==2 문자2의 코드번호-문자 0 = 2
// '1'-'0'==1 문자1의 코드번호-문자 0 = 2
// int age=2020+1-(2000+(arr[0]-'0')*10+(arr[1]-'0')); 조건을 간단하게 만들 수 있다.
// if(arr[7]=='1'||arr[7]=='2'){age+=100;} 일단 2000을 빼놓고 경우에 따라서만 100을 더한다.
int age=0;
if(arr[7]=='1'||arr[7]=='2'){
age=2020+1-(1900+(arr[0]-'0')*10+(arr[1]-'0')); //arr[0]은 10의자리이면 *10을 곱한다.
} else {
age=2020+1-(2000+(arr[0]-'0')*10+(arr[1]-'0'));
}
System.out.println("당신의 나이는 " +age+"입니다.");
}
}
package com.bit.day09.am;
import java.util.Arrays;
public class Ex03 {
public static void main(String[] args) {
// '0'-'0'==0 '공'-'공'
// '1'-'0'==1 '일'-'공' 그냥 봐도 한글번호-한글번호 = 1일 수 없다.
// '2'-'0'==2
char[] han={'공','일','이','삼','사','오','육','칠','팔','구'};
char[] su={'0','1','2','3','4','5','6','7','8','9'};
String input="구10101-일234567";
char[] arr=input.toCharArray();
System.out.println(Arrays.toString(arr)); //한글 그대로 출력
for(int i=0; i<arr.length; i++){
for(int j=0; j<han.length; j++){
if(arr[i]==han[j]){
arr[i]=su[j];
}
}
}
System.out.println(Arrays.toString(arr)); //숫자로 출력
int age=0;
if(arr[7]=='1'||arr[7]=='2'){
age=2020+1-(1900+(arr[0]-'0')*10+(arr[1]-'0'));
} else {
age=2020+1-(2000+(arr[0]-'0')*10+(arr[1]-'0'));
}
System.out.println("당신의 나이는 " +age+"입니다.");
}
}