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
相关产品推荐
相关产品推荐

