주민번호 검사 프로그램

jinkyung·2021년 1월 14일
0

JAVA

목록 보기
17/29
  • String 이용하는 방식

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+"입니다.");
	}
}

0개의 댓글

관련 채용 정보