You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java枚举类打印实现求助:新手关于Rank与Suit枚举的疑问

实现枚举类Rank和Suit的内容打印功能

刚接触枚举的话,先把你代码里未实现的构造方法与成员方法补全,这是枚举能正常工作的基础~下面一步步来实现:

第一步:补全枚举类的构造方法与成员方法

你的代码已经定义了枚举实例和私有字段,但缺少关键的构造方法和业务方法,先把这部分补全:

补全Rank枚举类

注意:你原来的代码里JACK(J), QUEEN(Q), KING(K)存在类型不匹配问题——rankValue是int类型,不能直接传字符。这里提供两种适配方案:

方案1:用数字标识J/Q/K(适合需要数值计算的场景)

public enum Rank {
    ACE(1), TWO(2), THREE(3), FOUR(4), FIVE(5), SIX(6), SEVEN(7), EIGHT(8), NINE(9), TEN(10), JACK(11), QUEEN(12), KING(13);

    private final int rankValue;

    // 枚举构造方法默认是private,无需显式声明
    Rank(int rankValue) {
        this.rankValue = rankValue;
    }

    // 获取牌面数值的方法
    public int getRankValue() {
        return rankValue;
    }

    // 获取枚举名称(比如"ACE"),也可以直接用枚举自带的name()方法
    public String getRankName() {
        return this.name();
    }
}

方案2:用字符串存储牌面标识(和你最初的写法匹配)

如果想直接存储J/Q/K这类字符,需要把rankValue的类型改成String:

public enum Rank {
    ACE("1"), TWO("2"), THREE("3"), FOUR("4"), FIVE("5"), SIX("6"), SEVEN("7"), EIGHT("8"), NINE("9"), TEN("10"), JACK("J"), QUEEN("Q"), KING("K");

    private final String rankValue;

    Rank(String rankValue) {
        this.rankValue = rankValue;
    }

    public String getRankValue() {
        return rankValue;
    }
}

补全Suit枚举类

补全构造方法和你要求的printSuit()方法:

public enum Suit {
    HEARTS("H"), SPADES("S"), DIAMONDS("D"), CLUBS("C");

    private final String suitText;

    Suit(String suitText) {
        this.suitText = suitText;
    }

    // 你定义的printSuit()方法
    public void printSuit() {
        System.out.printf("花色:%s(缩写:%s)%n", this.name(), suitText);
    }

    // 额外提供获取缩写的方法,方便灵活使用
    public String getSuitText() {
        return suitText;
    }
}

第二步:在main方法中实现打印功能

枚举自带values()方法,能返回包含所有枚举实例的数组,我们可以通过遍历这个数组打印全部内容,也可以直接指定单个枚举实例打印:

public class EnumPrintDemo {
    public static void main(String[] args) {
        // 打印所有Rank枚举项
        System.out.println("=== 所有牌面值 ===");
        for (Rank rank : Rank.values()) {
            System.out.printf("%-6s 对应值:%s%n", rank.getRankName(), rank.getRankValue());
        }

        // 打印所有Suit枚举项(调用你定义的printSuit()方法)
        System.out.println("\n=== 所有花色 ===");
        for (Suit suit : Suit.values()) {
            suit.printSuit();
        }

        // 单独打印某个指定的枚举实例
        System.out.println("\n=== 单个枚举实例示例 ===");
        System.out.println("选中的牌:" + Rank.ACE.getRankName() + ",值:" + Rank.ACE.getRankValue());
        Suit.SPADES.printSuit();
    }
}

关键知识点说明

  • values()方法:每个枚举类都会自动生成该方法,返回枚举所有实例组成的数组,是遍历枚举的核心方式。
  • 枚举构造方法:默认是private访问权限,不能被外部调用,仅在枚举内部定义实例时使用。
  • name()方法:枚举自带的方法,返回枚举实例的名称(比如HEARTS),默认和toString()效果一致。

内容的提问来源于stack exchange,提问作者Nic

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 06:40:21