min's devlog

유효성 검사 본문

til/Java

유효성 검사

값진 2022. 3. 23. 01:15

요구사항 : 아이디 입력 > 올바른 아이디 검사

System.out.print("아이디: ");
String id = reader.readLine();
		
for (int i=0; i<id.length(); i++) {
			
	char c = id.charAt(i);
			
	//문자 코드값 비교
	if (c < 'a' || c > 'z') { //영소문자가 아닌지??
		System.out.println("잘못된 문자가 발견되었습니다.");
		break;
	}
			
}

영소문자가 맞는지를 묻는 것 보다 영소문자가 아닌지를 먼저 찾는 것이 더 쉽다!

 

 

요구사항 : 회원 가입 할 때 이름 입력 > 길이(2~5자) + 한글만 가능

프로젝트 할 때 많이 쓰는 유효성 검사

		System.out.print("이름: ");
		String name = reader.readLine();
		
		if (isValid(name)) {
			System.out.println("올바른 이름");
		} else {
			System.out.println("올바르지 않은 이름");
		}
		
	}
	
	
	//isValid vs isValid2 비교
	private static boolean isValid(String name) {
		
		if (name.length() < 2 || name.length() > 5) { //1. 첫번째 검사
			return false;
		}
					
		for (int i=0; i<name.length(); i++) {
			char c = name.charAt(i);
			
			if (c < '가' || c > '힣') { //2. 두번째 검사
				return false;
			}
		}	
		
		return true;		
	}

	private static boolean isValid2(String name) {
		
		//1. 길이 검사
		if (name.length() >= 2 && name.length() <= 5) { 
			
			//2. 한글 검사
			for (int i=0; i<name.length(); i++) {
				char c = name.charAt(i);
				
				if (c >= '가' && c <= '힣') {
					//?
				} else {
					return false;
				}
			}
			
			return true; //*** 입력 문자 모두가 한글인게 확인된 위치!!
			
		} else {
			return false;
		}
		
	}

메서드에서 한번에 다 쓰기보단, 또 다른 isValid로 코드를 분리해주었다.

집합으로 보이기 시작하면 무조건 메서드로 빼는 연습을 많이 하는것이 좋다.

  * isValid2 메소드 에서 한글 유효성 검사할 때, return false 대신 true 를 쓰면 코드를 더 진행시킬 수가 없다. 입력문자 모두가 한글인게 확인된 위치에서 true를 리턴해야한다!

 

isValid는 길이가 2-5자 이내가 아닌지(올바르지 않은 것)를 찾는 메서드이다.

if문 범위 안에 들어가면 올바르지 않은 것!  -> 2-5자 내라면 false에 안걸림

조건에 위배되는것을 먼저 찾기 (그리고return false. 올바른 이름이 아래까지 도달하면 return true) 

 

 

조건이 하나인 코드는?

		//- 주민번호 중간에 '-' 반드시 입력
		String jumin = "951005-2021457";
		
		if (isValidJumin(jumin)) {
			System.out.println("올바른 주민번호");
			
			if (jumin.charAt(7) == '1') {
				System.out.println("남자");
			} else {
				System.out.println("여자");
			}
			
		} else {
			System.out.println("올바르지 않은 주민번호");
		}
		
	}
	

	private static boolean isValidJumin(String jumin) {
		
		if (jumin.charAt(6) == '-') {
			return true;
		} else {
			return false;
		}
	}

 

만족해야 할 조건이 하나일 때는 조건에 맞는 것을 찾아도 상관 없다! isvalid처럼 만족할 조건이 두개 이상일 때만 위배되는걸 먼저 찾으면 된다.

 

 

유효성 검사를 포함해 글자수를 출력해보기

		BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));

		System.out.print("문장 입력: ");
		String statement = reader.readLine();

		System.out.printf("입력한 문장은 %d개의 문자로 구성되었습니다.\n", statement.length());

		// 유효성검사. 이름을 입력해야할 때, 2~5자 이내로 설정해놓으면?
		if (statement.length() >= 2 && statement.length() <= 5) {
			System.out.println("올바른이름");
		} else {
			System.out.println("이름이 잘못되었습니다.");
		}
	}
}

 

'til > Java' 카테고리의 다른 글

Package와 import  (0) 2022.04.14
문장을 입력 받아 역순으로 출력하기  (0) 2022.03.23
문자열(String)  (0) 2022.03.22
String 조작 기능  (0) 2022.03.21
재귀 호출(recursive call)  (0) 2022.03.21
Comments