【发布时间】:2019-12-08 22:40:32
【问题描述】:
我正在尝试为一副牌创建一个 ADT 堆栈,该堆栈将通过界面执行不同的功能。我正在尝试让 show 功能正常工作,并在下面提供了我的代码。我得到的唯一错误是在行中的 for 语句中
套牌 [i] = 牌 [i %13] + 花色 [i / 13];
错误表明所需的类型是 T 并且正在发生的类型是 String。我知道这一定是卡片和西装数组的类型是字符串,但是当我将它们更改为私有类型 T 时,内容带有红色下划线,并表示内容的类型是字符串,并且需要 T 类型。我不确定我做错了什么,任何指导将不胜感激,谢谢。
public final class deckOfCards<T> implements CardInterface<T> {
String [] suit = {"Hearts", "Diamonds", "Spades", "Clubs"};
String[] cards = {"2 of", "3 of", "4 of", "5 of", "6 of", "7 of", "8 of",
"9 of", "10 of",
"Jack of", "Queen of", "King of", "Ace of"};
private T [] deck;
private int topIndex;
private boolean initialized = false;
private static final int DECK_SIZE = 52;
public deckOfCards(){this(DECK_SIZE);}
public deckOfCards(int initialCapacity) {
// Check the initial capacity:
checkDeck(initialCapacity);
T [] tempStack = (T[]) new Object[initialCapacity];
deck = tempStack;
topIndex = -1;
initialized = true;
}
public T show() {
T top = null;
for (int i = 0; i < deck.length; i++) {
deck[i] = cards[i % 13] + suit[i / 13];
System.out.println(deck);
}
return top;
}
【问题讨论】:
-
报错信息时,请复制准确的错误信息文本。
-
你有一个
T(private T deck[]) 类型的数组。您正在尝试添加String作为数组的元素。这是行不通的,因为无法将String分配给T。我不清楚你想在这里做什么,所以我不可能为你的问题提供解决方案。这个类真的需要支持泛型吗?好像不是。 -
抱歉,我正在尝试将该卡片和套装数组添加在一起以创建 52 个项目,然后将这些项目添加到包含卡片组中所有卡片的卡片组数组中。对于这个特定的场景,我想为一副纸牌创建一个 ADT,但我不确定如何去做。任何帮助表示赞赏,谢谢。
标签: java arrays stack abstract-data-type