我正在尝试使用两个枚举通过二维数组创建一副牌,然后打印所有创建的卡片。
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循环通过Card.Suit.values()然后通过Card.Rank.values()并创建一个新的Card(西装套装,排名等级),通过每个元素,根据它是阵列卡中的索引[s] [r]。
编译代码时,会出错。
“Deck.java:42:错误:不兼容的类型:套装无法转换为int
卡[西装] [等级] =新卡(西装,等级);“
答案 0 :(得分:2)
数组中的索引需要是整数,但是在行<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type="button" class="green color" value="green" />
<input type="button" class="blue color" value="blue" />
处,您传递的是cards[suit][rank] = ...
(例如suit
)和CLUBS
所持有的枚举常量。您可以使用Enum#ordinal()
方法获取表示当前枚举常量的位置的int。
更改您的
rank
到
cards[suit][rank] = new Card(suit, rank);