我正在尝试使用两个枚举通过2d数组创建一组卡片,然后打印所有创建的卡片。
public class Deck {
private Card[][] cards;
public Deck() {
cards = new Card[4][13];
for (Card.Suit suit : Card.Suit.values()) {
for (Card.Rank rank : Card.Rank.values()) {
//This is where my problem begins
cards[suit][rank] = new Card(suit, rank);
}
}
}
public Card getCard(Card.Suit s, Card.Rank r) {
//The error appears here as well.
return cards[suit][rank];
}
以下是我正在尝试使用的枚举。
public class Card {
private Rank rank;
private Suit suit;
// Kinds of suits
public enum Suit {
CLUBS,
DIAMONDS,
HEARTS,
SPADES;
}
// Kinds of ranks
public enum Rank {
ACE,
DEUCE,
THREE,
FOUR,
FIVE,
SIX,
SEVEN,
EIGHT,
NINE,
TEN,
JACK,
QUEEN,
KING;
}
public Card(Suit s, Rank r) {
rank = r;
suit = s;
}
...}
我认为应该发生的是,for循环通过卡遍历每个元素。适合values(),然后是Card。等级values()并根据其在阵列卡中的索引创建一张新卡(套装、等级)。
当我编译我的代码时,它会给出错误。
“Deck.java:42:错误:不兼容的类型:Suit无法转换为int
卡片【套装】【等级】=新卡片(套装,等级);“”
数组中的索引需要是整数,但在第行卡[套装][排名]=...
您正在传递由套装
(如CLUBS
)和排名
持有的枚举常量。您可以使用Enum#顺序()
方法获取表示当前枚举常量位置的int。
更改您的
cards[suit][rank] = new Card(suit, rank);
到
cards[suit.ordinal()][rank.ordinal()] = new Card(suit, rank);
// ^^^^^^^^^^ ^^^^^^^^^^
问题内容: 我已经看过Scala有关模拟Javaenum和case类与Enumeration的问题,但是似乎付出了太多的努力却却获得了太多的好处。 基本上,我希望有一个方法可以返回的所有单例对象,而无需重复几次。 这是我的代码的样子: 该方法应该返回类似如下的内容: 一切都应该发生在特征中,所以我只需要扩展它即可获得功能。 有什么建议可以做到这一点吗?这个想法是访问类并找到它们正在扩展的类的所有单
我有这门课: 我试图使用java流从AirbnbListing对象的ArrayList中收集整数价格: 但我得到了“不兼容类型:推断变量R有不兼容的边界”。不确定问题是什么。
嗨,我正在制作一个程序,该程序应该采用字母等级并将其转换为 GPA 值。程序的第一部分取了一个百分比并将其转换为字母等级,现在我正在尝试将转换后的字母等级转换为 int 值。我们只允许使用开关盒。但是,在执行此操作时,我发现一个不兼容的类型错误:java.lang.String required: int。不确定我需要更改什么,有什么帮助吗? 谢谢。
问题内容: 我想采用一个现有的枚举,并向其添加更多元素,如下所示: 这在Java中可行吗? 问题答案: 不,你无法使用Java执行此操作。除了别的什么,d大概就是A(扩展的“正常”想法)的一个实例,但是只知道这一点的用户却一无所知-这违背了枚举作为一组众所周知的集合的观点。价值观。 如果你可以告诉我们更多有关如何使用它的信息,我们可能会建议其他解决方案。
问题内容: 我有一个实现该接口的类,但是Java的foreach循环需要该接口。是否有一个到适配器在Java的标准库? 问题答案: 您需要一个所谓的“适配器”,以适应不兼容的。Apache commons- collections具有。用法是:
我一直试图编译这个简单的警报对话框,以便在用户单击提交按钮时显示。编译代码时会弹出一条错误消息: 错误:(33,74)错误:不兼容的类型: 这个类叫做Login_Activity,它扩展了BaseActivity,它扩展了Activity。