java - 如何实现枚举类型的某些方法

标签 java methods types enums enumeration

我是编程和 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/

相关文章:

ruby-on-rails - 比较日期 >= 但不包括自身

java - bubbleSort 和 swap 方法不起作用 [Java]

for-loop - 如何处理迭代器的类型?

haskell - 实际上是否可以从构造函数中删除 "Pi"?

java - MySQL 结果集 - 没有为参数 1 指定值

java - 表达式开始非法 : declaring a method inside another method

java - 如何从 TreeSet<Map.Entry<key,value>> 中分离键或值?

java - 如何在 Processing 中从网络摄像头捕获带音频的视频

java - 获取方法的类文件的绝对路径

grails - 在 gorm 中使用时间的数据类型是什么?