我是Java的新手,当我尝试创建DeckofCards类的实例时,我在main函数中出现错误。 DeckofCards类应该是一个私人数组" Cards"对象。我认为我的问题出现在DeckofCards类中,出于某种原因,我认为它不是一个数组?也许我创造了它错了?
我的主要错误是 '('或' ['预期 和 需要数组,但发现DeckofCards
这是我的主要功能:
public static void main(String[] args) {
Card myCard = new Card(13,1);
System.out.println(myCard.getSuit());
System.out.println(myCard);
DeckofCards myDeck = new DeckofCards; //error here
for(int i=0; i<53; i++) {
System.out.println(myDeck[i]); //second error here
}
}
这是我的DeckofCards课程:
public class DeckofCards {
private Card[] deck = new Card[52];
public DeckofCards(){
int i = 0;
for(int s = 1; s<5; s++){
for(int r = 1; r<14; r++){
deck[i].rank = r;
deck[i].suit = s;
i++;
}
}
}
}
如果有人能告诉我,我是否遗漏了某些语法或某些非常棒的东西!谢谢。
答案 0 :(得分:5)
你需要调用构造函数:
DeckofCards myDeck = new DeckofCards(); // note parens!
在Java中,括号是必需的。
在构造函数中,您还需要将数组的每个元素初始化为新的Card
对象:
for(int s = 1; s<5; s++){
for(int r = 1; r<14; r++){
deck[i] = new Card();
deck[i].rank = r;
deck[i].suit = s;
i++;
答案 1 :(得分:3)
错误很明显,myDeck
是一个自定义Object
而非数组
DeckofCards myDeck = new DeckofCards(); // parenthesis here
for (int i=0; i<53; i++) {
System.out.println(myDeck); // no brackets here
}
虽然循环本身应该位于toString
类的DeckofCards
方法中。
答案 2 :(得分:3)
替换
DeckofCards myDeck = new DeckofCards;
与
DeckofCards myDeck = new DeckofCards();
并且myDeck
从未初始化为数组。
答案 3 :(得分:1)
为了遍历DeckofCards,您将要公开该私有Card []数组。您可以使用bean表示法getCards()或仅将数组设为公共。
public class DeckofCards {
private Card[] deck = new Card[52];
public DeckofCards(){
int i = 0;
for(int s = 1; s<5; s++){
for(int r = 1; r<14; r++){
deck[i].rank = r;
deck[i].suit = s;
i++;
}
}
}
public Card[] getCards(){
return deck;
}
}
我可能只是让甲板公开。