java/코드 리뷰
15. demo2 - (6) CustomerDemo - 2 ( enum 선언 )
Astaroth아스
2020. 4. 27. 13:46
1
2
3
4
5
6
7
8
|
package demo2;
public enum Grade {
VIP, GOLD, SILVER, BRONZE
}
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
|
package demo2;
public class GradeDemo {
public static void main(String[] args) {
// 열거형의 주요 메서드
// String name()
// 열거형 상수의 이름을 문자열로 반환
String name = Grade.VIP.name();
System.out.println(name);
System.out.println();
// 열거형 상수의 순서값을 반환 (0부터 시작)
int no1 = Grade.VIP.ordinal();
int no2 = Grade.GOLD.ordinal();
int no3 = Grade.SILVER.ordinal();
int no4 = Grade.BRONZE.ordinal();
System.out.println(Grade.VIP + " " + no1);
System.out.println(Grade.GOLD + " " + no2);
System.out.println(Grade.SILVER + " " + no3);
System.out.println(Grade.BRONZE + " " + no4);
System.out.println();
// static T Enum.valueOf(Class<T> enumType, String name)
// static T valueOf(String name)
// 지정된 열거형 타입에서 이름에 해당하는 열거형 상수를 반환
Grade grade1 = Enum.valueOf(Grade.class, "VIP");
Grade grade2 = Grade.valueOf("GOLD");
System.out.println(grade1.name() + ", " + grade1.ordinal());
System.out.println(grade2.name() + ", " + grade2.ordinal());
}
}
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
|
package demo2;
public class Customer {
private String name;
private Grade grade; //enum 타입의 grade 변수
public Customer() {
}
public Customer(String name, Grade grade) {
this.name = name;
this.grade = grade;
}
public Customer(String name, String gradeName) {
this.name = name;
// 둘 중 하나
this.grade = Enum.valueOf(Grade.class, gradeName);
this.grade = Grade.valueOf(gradeName);
}
public String getName() {
return name;
}
public Grade getGrade() {
return grade;
}
}
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
|
package demo2;
public class CustomerDemo {
public static void main(String[] args) {
// enum 타입의 상수값을 사용하는 Customer 생성
Customer customer1 = new Customer("홍길동", Grade.VIP);
Customer customer2 = new Customer("홍길동", Grade.GOLD);
Customer customer3 = new Customer("홍길동", Grade.SILVER);
Customer customer4 = new Customer("홍길동", Grade.BRONZE);
// enum 타입에서 정의한 상수값 외의 값은 대입 될 수 없음 (컴파일시 에러)
// Customer customer5 = new Customer("홍길동", "골드");
// Customer customer6 = new Customer("홍길동", 0);
// Customer customer7 = new Customer("홍길동", Grade.VVIP);
System.out.println(getPoint(customer1, 120000));
System.out.println(getPoint(customer2, 120000));
System.out.println(getPoint(customer3, 120000));
System.out.println(getPoint(customer4, 120000));
}
public static int getPoint(Customer customer, int orderPrice) {
int point = 0;
if (customer.getGrade() == Grade.VIP) {
point = (int) (orderPrice * 0.07) ;
} else if (customer.getGrade() == Grade.GOLD) {
point = (int) (orderPrice * 0.05) ;
} else if (customer.getGrade() == Grade.SILVER) {
point = (int) (orderPrice * 0.03) ;
} else if (customer.getGrade() == Grade.BRONZE) {
point = (int) (orderPrice * 0.01) ;
}
return point;
}
}
|