我是编程和 Java 新手,目前正在学习枚举类型。
我创建了一个枚举类型Card
,它存储一副纸牌中每张纸牌的值,例如二 = 2,三 = 3 ... Ace = 11。每张图片卡都有相同的值,10。
我正在尝试实现一个方法getPrevious()
,它将返回列表中的前一个枚举值。例如,如果在 SIX
上调用该方法,它将返回 FIVE
,在 TWO
上调用该方法将返回 ACE
>。然而我正在努力寻找一种方法来做到这一点。
下面您可以看到我编写的当前代码,任何有关如何实现方法 getPrevious()
的帮助或提示都会非常有帮助。
public class EnumPractice {
public enum Card {
TWO(2), THREE(3), FOUR(4), FIVE(5), SIX(6), SEVEN(7), EIGHT(8),
NINE(9), TEN(10), JACK(10), QUEEN(10), KING(10), ACE(11), ;
private int value;
private Card card;
Card(int value){
this.value = value;
}
public int getValue(){
return value;
}
public String toString(){
return "The value of this card is: " + value;
}
}
public static void main(String[] args) {
System.out.println(Card.ACE.getValue());
}
}
最佳答案
您的 getPrevious()
方法可能如下所示
public enum Card {
TWO(2), THREE(3), FOUR(4), FIVE(5), SIX(6), SEVEN(7), EIGHT(8),
NINE(9), TEN(10), JACK(10), QUEEN(10), KING(10), ACE(11);
private int value;
Card(int value) {
this.value = value;
}
public int getValue() {
return value;
}
public Card getPrevious() {
int previous = ordinal() - 1;
if (previous < 0 ) { // if negative, then we have to go to the last element
previous += values().length;
}
return Card.values()[previous];
}
}
关于java - 如何实现枚举类型的某些方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34518019/