Java Enum 문제 풀어보기1

Enum 문제 풀어보기

회원 인증 등급을 정하는 열거형을 만들고 등급은 GUEST, LOGIN, ADMIN이다.
등급에 따라 권한레벨과 설명을 조회할 수 있도록 getter 생성한다.

  • GUEST
    • auth= Low
    • description = 손님
  • LOGIN
    • auth = Middle
    • description = 회원
  • ADMIN
    • auth = High
    • description = 관리자

AuthGrade.class

public enum AuthGrade {
    GUEST("Low", "손님"),
    LOGIN("Middle", "회원"),
    ADMIN("High", "관리자");

    private final String auth;
    private final String description;

    AuthGrade(String auth, String description) {
        this.auth = auth;
        this.description = description;
    }

    public String getAuth() {
        return auth;
    }

    public String getDescription() {
        return description;
    }
}

인증 등급 조회하기

  • 호출부인 Main 클래스에서 결과를 조회하도록 코드 작성
  • 앞에서 만든 AuthGrade 클래스를 사용한다.
public class Main {
    public static void main(String[] args) throws Exception {
        AuthGrade[] auths = AuthGrade.values();

        for (AuthGrade auth : auths) {
            System.out.println(auth.name() + "의 권한: " + auth.getAuth() + ", 설명: " + auth.getDescription());
        }
    }
}

인증 등급 열거형 활용 코드

  • 호출부에서 사용한 Main 클래스에서 이어서 사용하기
  • 인증 등급에 따라 화면메뉴를 다르게 표시한다.

출력 화면 - GUEST

등급을 입력하세요. [GUEST, LOGIN, ADMIN]: GUEST
손님으로 입장하였습니다.
==MAIN MANU==
- 시작하기

출력 화면 - LOGIN

등급을 입력하세요. [GUEST, LOGIN, ADMIN]: LOGIN
손님으로 입장하였습니다.
==MAIN MANU==
- 시작하기
- 우편함

출력 화면 - ADMIN

등급을 입력하세요. [GUEST, LOGIN, ADMIN]: LOGIN
손님으로 입장하였습니다.
==MAIN MANU==
- 시작하기
- 우편함
- 관리자 옵션

Main.class

public class Main {
    public static void main(String[] args) throws Exception {
        System.out.print("등급을 입력하세요. [GUEST, LOGIN, ADMIN]: ");
        Scanner scanner = new Scanner(System.in);
        String login = scanner.nextLine();

        AuthGrade access = AuthGrade.valueOf(login.toUpperCase());

        System.out.println(access.getDescription() + "으로 입장하였습니다.");
        System.out.println("==메뉴 목록==");
        System.out.println("- 메인 화면");
        if (access.name().equals("LOGIN")) {
            System.out.println("- 우편함");
        }

        if (access.name().equals("ADMIN")) {
            System.out.println("- 우편함");
            System.out.println("- 관리자 옵션");
        }
    }
}

등급을 입력하세요. [GUEST, LOGIN, ADMIN]: ADMIN
관리자으로 입장하였습니다.
==메뉴 목록==
-메인 화면
-우편함
-관리자 옵션

  • valueOf(...) 인자 값을 보면 toUpperCase() 사용하여 대문자로 변환해서 입력하도록 하였다. 사용자가 admin 으로 입력할 수 있기 때문이다.