min's devlog
유효성 검사 본문
요구사항 : 아이디 입력 > 올바른 아이디 검사
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