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