Java/[문제해결]

[김영한의 실전 자바_중급1] 열거형(ENUM)_연습문제 3(p.29)

줌인. 2024. 4. 17. 23:01

[p.29 / 복습 후 코드]

public class AuthGradeMain2 {

    public static void main(String[] args) {
        AuthGrade[] grades = AuthGrade.values();
        Scanner scanner = new Scanner(System.in);

        System.out.println("당신의 등급을 입력하세요 " + Arrays.toString(grades) + " : ");
        String grade = scanner.nextLine().toUpperCase();

        print(grade);
    }

    private static void print(String grade) {
        AuthGrade inputGrade = AuthGrade.valueOf(grade);
        System.out.println("당신의 등급은 " + inputGrade.name());

        System.out.println("== 메뉴 목록 ==");
        if (inputGrade.getLevel() > 0) {
            System.out.println("- 메인 화면");
        }
        if (inputGrade.getLevel() > 1) {
            System.out.println("- 이메일 관리 화면");
        }
        if (inputGrade.getLevel() > 2) {
            System.out.println("- 관리자 화면");
        }
    }

}

 

 


 

[p.29] AuthGradeMain2 클래스에 코드를 작성 / 인증 등급을 입력 받아서 앞서 만든 AuthGrade 열거형으로 변환

          인증 등급에 따라 접근할 수 있는 화면을 다르게

import java.util.Arrays;
import java.util.Scanner;

public class AuthGradeMain2 {

    public static void main(String[] args) {
        AuthGrade [] grades = AuthGrade.values();
        Scanner scanner = new Scanner(System.in);
        System.out.print("당신의 등급을 입력하세요" + Arrays.toString(grades) + " : ");
        String checkGrade = scanner.nextLine(); //grade -> AuthGrade.valueOf(grade) --> AuthGrade화 : toString 자동화되어있어서 name출력
        
        AuthGrade checkAuthGrade = AuthGrade.valueOf(checkGrade.toUpperCase());
        System.out.println(check(checkAuthGrade));
    }

    public static String check(AuthGrade checkAuthGrade) {
        System.out.println("당신의 등급은 " + checkAuthGrade.name()  +"입니다.");
        System.out.println("==메뉴 목록==");

        if(AuthGrade.GUEST == checkAuthGrade) { //grade가 login
            return "- 메인 화면";
        } else if(AuthGrade.LOGIN == checkAuthGrade) { //grade가 login
            return "- 메인 화면 \n- 이메일 관리 화면";
        } else {
           return "- 메인 화면 \n- 이메일 관리 화면 \n- 관리자 화면";
        }
    }

}

 

<풀이과정>

1) AuthGrade를 배열화 ⇒ AuthGrade값을 모두 담을 수 있는 .values()출력

2) Scanner로 입력받은 값 String 타입을 AuthGrade로 변환 ⇒ AuthGrade.valueOf(Scanner값)

3) 메서드화로 결과만 보이게 가시화

4) 메서드 - 각 타입별 출력 값 출력 

 

 

▼ 김영한 선생님 풀이 참고 후, 코드 수정본 ▼

import java.util.Arrays;
import java.util.Scanner;

public class AuthGradeMain2_Ref {

    public static void main(String[] args) {
        AuthGrade [] grades = AuthGrade.values();
        Scanner scanner = new Scanner(System.in);
        System.out.print("당신의 등급을 입력하세요" + Arrays.toString(grades) + " : ");
        String checkGrade = scanner.nextLine(); //grade -> AuthGrade.valueOf(grade) --> AuthGrade화 : toString 자동화되어있어서 name출력
        AuthGrade checkAuthGrade = AuthGrade.valueOf(checkGrade.toUpperCase());

        check(checkAuthGrade);
    }

    public static void check(AuthGrade checkAuthGrade) {
        System.out.println("당신의 등급은 " + checkAuthGrade.name()  +"입니다.");
        System.out.println("==메뉴 목록==");

        if(checkAuthGrade.getLevel() > 0) {
            System.out.println("- 메인 화면");
        }
        if(checkAuthGrade.getLevel() > 1) {
            System.out.println("이메일 관리 화면");
        }
        if(AuthGrade.LOGIN.getLevel() > 2){
            System.out.println("- 관리자 화면");
        }
    }

}

- level을 통해서 추가 등급이 들어오거나, 이름이 변경되어도 수정 보완이 쉽게 변경


[김영한 선생님 풀이_원본]

import java.util.Scanner;
public class AuthGradeMain2 {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        System.out.print("당신의 등급을 입력하세요[GUEST, LOGIN, ADMIN]: ");
        String grade = scanner.nextLine();
        AuthGrade authGrade = AuthGrade.valueOf(grade.toUpperCase());
        System.out.println("당신의 등급은 " + authGrade.getDescription() + "입니
                다.");
                System.out.println("==메뉴 목록==");
        if (authGrade.getLevel() > 0) {
            System.out.println("- 메인 화면");
        }
        if (authGrade.getLevel() > 1) {
            System.out.println("- 이메일 관리 화면");
        }
        if (authGrade.getLevel() > 2) {
            System.out.println("- 관리자 화면");
        }
    }
}

 

 

728x90