※ Main 클래스
package my.day07.c.For;
import java.util.Scanner;
public class Main_member {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("== 첫번째 회원을 가입하세요 ==\n");
Member mbr1 = new Member();
mbr1.registerMember(sc);
sc.close();
}
}
※ 메소드 클래스
// 필드 생성
package my.day07.c.For;
import java.util.Scanner;
import my.util.MyUtil;
public class Member {
// field
String id; // 필수 입력사항
String pwd; // 필수 입력사항, 암호는 대문자, 소문자, 숫자, 특수기호가 혼합된 8글자 이상 15글자 이하이어야 한다.
String name; // 필수 입력사항
String email; // 필수 입력사항
// 회원가입을 해주는 메소드 생성
// method
// 회원가입을 해주는 메소드 생성하기
void registerMember(Scanner sc) {
for(;;) {
System.out.print("1. 아이디: ");
String id = sc.nextLine();
if( id.trim().isEmpty() ) { // 입력한 것이 없을 때
System.out.println("[경고] 아이디를 올바르게 입력하세요!!\n");
}
else {
this.id = id;
break;
}
} // end of for
// 암호는 대문자, 소문자, 숫자, 특수기호가 혼합된 8글자 이상 15글자 이하이어야 한다.
for(;;) {
System.out.print("2. 비밀번호: ");
String pwd = sc.nextLine();
if( pwd.trim().isEmpty() ) { // 입력한 것이 없을 때
System.out.println("[경고] 비밀번호를 올바르게 입력하세요!!\n");
}
else {
if( MyUtil.checkPwd(pwd) ) { // 예: qwEr1234$
this.pwd = pwd;
break;
}
else { // 예: qwer1234$ qWer1234 qWer!@#$ qW123$
System.out.println("[경고] 암호는 대문자, 소문자, 숫자, 특수기호가 혼합된 8글자 이상 15글자 이하이어야 합니다!!");
}
}
} // end of for
for(;;) {
System.out.print("3. 성명: ");
String name = sc.nextLine();
if( name.trim().isEmpty() ) { 입력한 것이 없을 때
System.out.println("[경고] 성명을 올바르게 입력하세요!!\n");
}
else {
this.name = name;
break;
}
} // end of for
for(;;) {
System.out.print("4. 이메일: ");
String email = sc.nextLine();
if( email.trim().isEmpty() ) { 입력한 것이 없을 때
System.out.println("[경고] 이메일을 올바르게 입력하세요!!\n");
}
else {
this.email = email;
break;
}
} // end of for
System.out.println("== 회원가입이 정상적으로 처리되었습니다. ==");
} // end of void registerMember(Scanner sc)
// 비밀번호가 올바르게 입력되었는지 확인하는 메소드(대문자, 소문자, 숫자, 특수문자가 혼합, 8글자 이상 15글자 이하)
// 암호는 대문자, 소문자, 숫자, 특수기호가 혼합된 8글자 이상 15글자 이하인지 아닌지 검사를 해주는 메소드 생성하기
// 파라미터 String pwd 값이 조건에 부합하다면 true 리턴하고,
// 조건에 부합하지 않다면 false 를 리턴한다.
public static boolean checkPwd(String pwd) {
boolean upperFlag = false; // 대문자인지 기록하는 용도
boolean lowerFlag = false; // 소문자인지 기록하는 용도
boolean digitFlag = false; // 숫자인지 기록하는 용도
boolean specialFlag = false; // 특수문자인지 기록하는 용도
// 입력받은 String pwd 의 글자길이 알아보기
// System.out.println( "입력받은 암호 길이: " + pwd.length() );
int pwd_length = pwd.length(); // 비밀번호의 글자수
if( pwd_length < 8 || pwd_length > 15) { // 비밀번호의 글자수가 8글자 이상 15글자 이하가 아닌 경우
return false;
}
else { // 비밀번호의 글자수가 8글자 이상 15글자 이하인 경우
// 암호가 어떤 글자로 이루어졌는지 검사를 시도해야 한다.
// pwd ==> "qwEr1234$"
// index ==> 012345678
for(int i=0; i<pwd_length; i++) { // 입력받은 글자의 길이만큼 검사를 해야 한다.
char ch = pwd.charAt(i);
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;
}
else {
return false;
}
}
} // end of boolean checkPwd(String pwd)
}'Java' 카테고리의 다른 글
| while , do ~ while() (0) | 2022.06.15 |
|---|---|
| for - 입력받은 두 정수 사이의 홀수들과 짝수들의 합 구하기 (0) | 2022.06.12 |
| 반복문 - for 문, break, continue (0) | 2022.06.10 |
| switch 문을 이용하여 성적 구하기 (0) | 2022.06.10 |
| Switch 문 & 삼항연산자 (0) | 2022.06.10 |