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

希望使用2个枚举来描述java中的类,并将它们分配给main函数中的类,java,class,enums,Java,Class,Enums,我正在尝试制作一个程序来表示一副牌。我使用两个枚举来定义一个类卡片。然后,在主要方面,我试图分配西装和排名的一张牌 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),

我正在尝试制作一个程序来表示一副牌。我使用两个枚举来定义一个类卡片。然后,在主要方面,我试图分配西装和排名的一张牌

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;
    }
}
然后在另一个文件中,当我设置秩和setSuit时,我得到一个错误

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());
    }
}

我可以看到三个问题:

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

enum Rank{TWO(2),THREE(3)FOUR(4),FIVE(5),
您在不存在的卡片类上调用set方法,它们需要是静态的,这是没有意义的。您应该在实例上调用它们:

Card.setRank(JACK);
Card.setSuit(SPADES);
这应该是:

jSpade.setRank(JACK);
jSpade.setSuit(SPADES);
第三,您需要使用枚举的类来限定枚举或静态导入它们:

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

你的问题是什么?你不能在Card类上调用setRank或setSuit,因为它没有任何静态方法。错误是什么?快速看一眼,我猜你的主要方法不知道什么是JACK或spade,因为它们没有在该方法/类中定义。你需要Card.Rank.JACK etcI我想你想要的是jSpade.setRankJACK而不是Card.setRankJACKok我把它改为jSpade.setRankJACK;和jSpade.SETSUITES;但是我仍然得到一个错误,说SPADES或JACK不能解析为一个变量,我是不是定义错了?