[문제]
Q. 회원을 추가하기 위해 아이디, 비밀번호, 이름, 나이, 성별(M/F), 이메일, 전화번호를 입력받고
해당 값을 ArrayList<Member>에 추가해라.
사용자가 성별을 M 또는 F로 입력하지 않은 경우 "성별만 재입력" 받고 싶음
// 회원 추가 화면
public void insertMember() {
System.out.println("== 새로운 멤버 추가 ==");
System.out.print("아이디: ");
String userId = sc.nextLine();
int idCheck = mc.idCheck(userId);
if(idCheck != 0) {
System.out.println("이미 존재하는 아이디입니다. 다른 아이디를 입력하세요.");
insertMember();
return;
}
System.out.print("비밀번호: ");
String userPwd = sc.nextLine();
System.out.print("이름: ");
String userName = sc.nextLine();
System.out.print("나이: ");
int age = sc.nextInt();
sc.nextLine();
System.out.print("성별(M/F): ");
char gender = sc.nextLine().toUpperCase().charAt(0);
System.out.print("이메일: ");
String email = sc.nextLine();
System.out.print("휴대폰번호: ");
String phone = sc.nextLine();
int result = mc.insertMember(userId, userPwd, userName, age, gender, email, phone);
if(result > 0) {
System.out.println("성공적으로 추가되었습니다.");
} else {
System.out.println("곡 추가에 실패했습니다.");
}
}
[실패 방법 1]
기존에 자주 사용하던 방법처럼 insertMember() 메소드를 호출하여 처음부터 시작하고 return;으로 해당 메소드를 끝내는 방법
▶ 아이디부터 모두 새로 재입력해야 하므로 적절하지 않음
[해결 방법]
제어문 while과 while 하위 if문, 분기문 continue와 break를 사용!
성별에 대한 입력을 while문으로 진행함
while 하위 if문으로 M/F가 아닐 경우 재입력하라는 출력문을 기술한 뒤
continue를 쓰면 while로 돌아가기 때문에 성별만 재입력 가능해짐!
제대로 입력했을 경우에는 if문 바깥, while문 안쪽 위치에 break를 걸어 while문을 빠져나가게 함
// 회원 추가 화면
public void insertMember() {
System.out.println("== 새로운 멤버 추가 ==");
System.out.print("아이디: ");
String userId = sc.nextLine();
int idCheck = mc.idCheck(userId);
if(idCheck != 0) {
System.out.println("이미 존재하는 아이디입니다. 다른 아이디를 입력하세요.");
insertMember();
return;
}
System.out.print("비밀번호: ");
String userPwd = sc.nextLine();
System.out.print("이름: ");
String userName = sc.nextLine();
System.out.print("나이: ");
int age = sc.nextInt();
sc.nextLine();
// 성별 확인받고, M/F가 아닐 경우 다시 입력받기 위해 변수만 따로 빼고 판별식은 while로 묶음
char gender = 0;
while (true) {
System.out.print("성별(M/F): ");
gender = sc.nextLine().toUpperCase().charAt(0);
if(gender != 'M' && gender != 'F') {
System.out.println("성별 재확인 후 알파벳 M(m) 또는 F(f)으로 입력하세요.");
continue;
}
break;
}
System.out.print("이메일: ");
String email = sc.nextLine();
System.out.print("휴대폰번호: ");
String phone = sc.nextLine();
int result = mc.insertMember(userId, userPwd, userName, age, gender, email, phone);
if(result > 0) {
System.out.println("성공적으로 추가되었습니다.");
} else {
System.out.println("곡 추가에 실패했습니다.");
}
}
![](https://t1.daumcdn.net/keditor/emoticon/friends1/large/023.gif)