국비교육 8일차 JAVA : 유효성 검사, 대문자/소문자/숫자/특수문자 글자 수 세기
public static boolean checkPwd(String pwd) { // static으로 해주는 것은 인스턴스를 만들 필요 없이 객체를 이용하기 위해서.
boolean upperFlag = false; // 대문자인지 기록하는 용도
boolean lowerFlag = false; // 소문자인지 기록하는 용도
boolean digitFlag = false; // 숫자인지 기록하는 용도
boolean specialFlag = false; // 특수문자인지 기록하는 용도
int pwd_length = pwd.length(); // 비밀번호의 글자 수
if(pwd_length < 8 || pwd_length > 15) {
return false; // 위에가 둘 다 참이라서 글자 수가 맞지 않는다면 false를 return 해줘서 다시 입력하라는 문구 출력
} // end of if pwd_length
else { // 비밀번호의 글자수가 8글자 이상 15글자 이하인 경우
// 암호가 어떤 글자로 이루어졌는지 검사를 시도해야 한다.
// pwd ==> "Qwert1234!"
// index ==> 012345678
for(int i=0; i<pwd_length; i++) { // 입력받은 글자의 길이 만큼 검사를 해야한다.
char ch = pwd.charAt(i); // pwd 입력한거에서 순서대로 한글자씩 받아와 줌. 이 경우 i는 0에서 8까지 하나씩 받아와 줌.
// charAt : 한글자만 선택해서 char로 변환
if( Character.isUpperCase(ch) ) { // 대문자라면
upperFlag = true;
}
else if( Character.isLowerCase(ch) ) { // 소문자라면
lowerFlag = true;
}
else if( Character.isDigit(ch) ) { // 숫자라면
digitFlag = true;
}
else { // 특수문자인 경우
specialFlag = true;
}
} // end of for
if( upperFlag && lowerFlag && digitFlag && specialFlag ) {
return true; // for문에서 4개 다 true라면 true return
}
else {
return false;
}
} // end of else
} // end of boolean checkPwd
for(;;) {
System.out.print("2. 비밀번호 : ");
String pwd = sc.nextLine();
if( pwd.trim().isEmpty() ) { // 텅 비었니?
System.out.println("[경고] 비밀번호를 올바르게 입력하세요.\n");
}
else {
if( MyUtil.checkPwd(pwd) ) { // 예 > Qwert1234! 와 같이 올바르게 입력해주면 true
this.pwd = pwd; // 올바르게 넣었으면 비밀번호 넣어주렴.
break; // for문 탈출!
}
else { // 예 > qwer1234! 와 같이 조건에 맞지 않는다면?
System.out.println("[경고] 암호는 대문자, 소문자, 숫자, 특수기호가 혼합된 8글자 이상 15글자 이하여야 합니다.\n");
} // end of else
} // end of else 1
} // end of for pwd
public static void main(String[] args) {
String word = "Abz3Sa0#$T";
int word_length = word.length();
int upperCnt = 0; // 초기화를 해야함.
int lowerCnt = 0;
int digitCnt = 0;
int specialCnt = 0;
for (int i=0; i< word_length; i++ ) {
char ch = word.charAt(i);
if( Character.isUpperCase(ch) ) {
upperCnt++; // 3
}
else if( Character.isLowerCase(ch) ) {
lowerCnt++; // 3
}
else if( Character.isDigit(ch)) {
digitCnt++; // 2
}
else {
specialCnt++; //2
}
} // end of for
System.out.println(word + "\n"
+ "전체 길이 : " + word_length + "\n"
+ "대문자 개수 : " + upperCnt + "\n"
+ "소문자 개수 : " + lowerCnt + "\n"
+ "숫자 개수 : " + digitCnt + "\n"
+ "특수문자 개수 : " + specialCnt + "\n");
/*
Abz3Sa0#$T
전체 길이 : 10
대문자 개수 : 3
소문자 개수 : 3
숫자 개수 : 2
특수문자 개수 : 2
*/
} // end of public static void main(String[] args)