| 상태 종류 |
|---|
| Green |
| Red |
| Yellow |
이것도 열거형인 enum으로 해서 만들었다.
public enum Status {
GREEN,
RED,
YELLOW;
}
또한 이러한 상태도 수강생을 등록할 때 상태도 입력을 받아서 넣어야 하므로 AddStudent 클래스를 수정했다.
- 수정할 목록
------------------------------------------------------- 🔻 고유 번호 중복 허용 X - 무한 반복을 하면서 교유번호 입력 받기 - 기존에 저장된 학생 데이터를 포함하는 맵을 가져와서 맵에서 입력한 고유번호가 존재여부를 확인 - 고유번호가 등록되지 않은 번호를 입력받으면 루프에서 나감 ------------------------------------------------------- 🔻 필수과목, 선택과목 중복 허용 X - 새로 입력을 받기 때문에 Set을 이용해서 중복을 허요하지 않도록 한다. ------------------------------------------------------- 🔻 상태 입력 받기 - 상태를 입력 받는데 소문자로 입력해도 자동으로 대문자로 인식 (toUpperCase() 를 이용) - 제대로 입력 받을 때까지 무한 루프 -------------------------------------------------------
int stdNo;
while (true) {
System.out.print("수강생의 고유번호를 입력해주세요 : ");
stdNo = scanner.nextInt();
scanner.nextLine();
if (studentMap.containsKey(stdNo)) {
System.out.println(stdNo + "라는 수강생 번호는 이미 존재합니다.");
} else {
break;
}
}
// 필수과목과 선택과목 중복 허동 제거
Set<Subject> subjects = new HashSet<>();
// 상태 입력
Status status = null;
while (status == null) {
System.out.print("상태를 입력해주세요.(GREEN, RED, YELLOW) : ");
String statusInput = scanner.nextLine().toUpperCase();
try {
status = Status.valueOf(statusInput);
} catch (IllegalArgumentException e) {
System.out.println("잘못되 상태 입력하셨습니다. GREEN, RED, YELLOW 중에서 선택해 주세요.");
}
}
또한 수강생 정보를 수정할 EditStudent 클래스도 수정한다.
- 수정할 목록
------------------------------------------------------- 🔻 수정할 번호를 입력(이름, 상태) - - 기존에 저장된 학생 데이터를 포함하는 맵을 가져와서 해당하는 수강생의 고유번호로 검색 - int 형태로 번호를 입력받는다. - switch 문으로 선택 - 상태를 올바르게 입력했는지 확인 및 변경 -------------------------------------------------------
Map<Integer, Object> studentMap = managementApplication.getStudentMap();
if (student != null) {
System.out.println("수정할 항목을 입력해주세요.");
System.out.println("1. 이름");
System.out.println("2. 상태");
int choice = scanner.nextInt();
scanner.nextLine(); // 개행 문자 처리
case 2:
// 상태 수정
Status newstatus = null;
while (newstatus == null) {
System.out.print("새로 바꿀 상태를 입력해주세요.(GREEN, RED, YELLOW) : ");
String statusInput = scanner.nextLine().toUpperCase();
try {
newstatus = Status.valueOf(statusInput);
} catch (IllegalArgumentException e) {
System.out.println("잘못되 상태 입력하셨습니다. GREEN, RED, YELLOW 중에서 선택해 주세요.");
}
}
student.setStatus(newstatus);
System.out.println("수강생인 "+ student.getName() + "의 상태가 수정되었습니다 : " + newstatus);
break;
default:
System.out.println("잘못된 선택하셨습니다. 1 또는 2를 입력해주세요.");