希望使用 2 个枚举来描述 Java 中的类,并将它们分配给 Main 函数中的类



我正在尝试制作一个程序来表示一副纸牌。我使用两个枚举来定义类卡。然后,在主要情况下,我试图为一张牌分配花色和等级。

public final class Card {
enum Suit {
HEARTS, SPADES, CLUBS, DIAMONDS
}
enum Rank {
TWO(2), THREE(3), FOUR(4),
FIVE(5), SIX(6), SEVEN(7),
EIGHT(8), NINE(9), TEN(10),
JACK(11), QUEEN(12), KING(13), ACE(14);
private final int rank;
private Rank(int rank) {
this.rank = rank;
}
public int rank() {
return this.rank;
}
}
private Suit suit;
private Rank rank;
public void setRank(Rank rank) {
this.rank = rank;
}
public Rank getRank() {
return rank;
}
public void setSuit(Suit suit) {
this.suit = suit;
}
public Suit getSuit() {
return suit;
}
}

然后在另一个文件中,当我设置排名和设置套装时出现错误

import java.util.*;
public class deckOfCardsDriver {
public static void main(String[] args) {
Card jSpade = new Card();
Card.setRank(JACK);
Card.setSuit(SPADES);
System.out.println( jSpade.getRank());
System.out.println( jSpade.getSuit());
}
}

我可以看到三个问题:

FOUR之前没有逗号,这是一个简单的语法错误:

enum Rank{TWO(2),THREE(3)FOUR(4),FIVE(5),

您在不存在的Card类上调用set方法(它们必须是静态的,这没有意义(。您应该在实例上调用它们:

Card.setRank(JACK);
Card.setSuit(SPADES);

这应该是:

jSpade.setRank(JACK);
jSpade.setSuit(SPADES);

第三,你需要用枚举的类限定枚举(或静态导入它们(:

jSpade.setRank(Card.Rank.JACK);
jSpade.setSuit(Card.Suit.SPADES);

最新更新