gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 11:13:06 25 4
gpt4 key购买 nike

我正在尝试制作一个程序来代表一副纸牌。我使用两个枚举来定义 Card 类。然后主要是我尝试将花色和等级分配给一张卡。

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

然后在另一个文件中,当我设置Rank和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());
}
}

最佳答案

我看到的三个问题:

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

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

关于java - 希望使用2个枚举来描述java中的类并将它们分配给主函数中的类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50476524/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com