24.08.03

윤지현·2024년 8월 3일

TIL

목록 보기
31/75
  • 저번에 2일차 했던 것들을 바탕으로 조건에 맞게 수정 및 추가적으로 클래스를 만들어서 기능을 수행할 수 있도록 해야한다.
    추가 요구 사항이었던 수강생의 상태를 관리할 수 있어야 하는데 수강생의 상태는 이런 형태로 되어 있다.
상태 종류
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를 입력해주세요.");
  • 후기
    하면서 조건에 맞게 수정을 하다 보니 특정상태의 수강생 정보를 출력하는 메서드를 만들지 못했다. 내일 다시 한 번 도전해봐야겠다.
profile
첫 시작

0개의 댓글