在Java中创建对象数组类的实例
我是Java新手,当我尝试创建DeckofCards类的实例时,我的主函数中出现了一个错误。DeckofCards类应该是“Cards”对象的私有数组。我认为我的问题是DeckofCards类的东西,出于某种原因,我认为它不是数组?也许是我弄错了 我的主要错误是 ”(“或”[“预期的” 和 需要阵列,但找到了DeckofCards 以下是我的主要功能:在Java中创建对象数组类的实例,java,arrays,class,initialization,instance,Java,Arrays,Class,Initialization,Instance,我是Java新手,当我尝试创建DeckofCards类的实例时,我的主函数中出现了一个错误。DeckofCards类应该是“Cards”对象的私有数组。我认为我的问题是DeckofCards类的东西,出于某种原因,我认为它不是数组?也许是我弄错了 我的主要错误是 ”(“或”[“预期的” 和 需要阵列,但找到了DeckofCards 以下是我的主要功能: public static void main(String[] args) { Card myCard = new Card
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
}
}
publicstaticvoidmain(字符串[]args){
卡myCard=新卡(13,1);
System.out.println(myCard.getSuit());
系统输出打印项次(myCard);
DeckofCards myDeck=新建DeckofCards;//此处出错
对于(int i=0;i而言,错误非常明显,myDeck
是单个自定义对象,而不是数组
DeckofCards myDeck = new DeckofCards(); // parenthesis here
for (int i=0; i<53; i++) {
System.out.println(myDeck); // no brackets here
}
DeckofCards myDeck=new DeckofCards();//此处为括号
对于(int i=0;i您需要调用构造函数:
DeckofCards myDeck = new DeckofCards(); // note parens!
在Java中,括号是必需的
在构造函数中,还需要将数组的每个元素初始化为一个新的卡
对象:
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++;
for(int s=1;s替换
DeckofCards myDeck = new DeckofCards;
与
而myDeck
从未初始化为数组。为了遍历DeckofCards,您需要公开该私有卡[]数组。您可以使用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;
}
}
公共类卡片{
私人卡[]套=新卡[52];
公共甲板{
int i=0;
对于(int s=1;s“出于某种原因,我认为它不是一个数组”-您几乎一针见血。使用方法与deck类中的卡数组进行交互。而不是新建DeckofCards
使用新建DeckofCards()
注意:构造对象(或实际设置其参数)您需要调用构造函数。构造函数是类的方法(即使您没有明确编写自己的构造函数,Java也会为类提供默认构造函数)。现在您实际编写了构造函数(public DeckOfCards()
)在您的类中,请参见:它是一个方法。要在Java中调用方法,您需要键入methodName(arguments)
。括号是必须的,参数不是(例如,您编写的构造函数不带参数)。有人能解释为什么System.out.println(myDeck[i])返回错误吗?System.out.println(myCard)返回卡片(“例如黑桃王牌”)myDeck[i]不是一张卡吗?谢谢Ted!你能解释一下System.out.println(myDeck[i])返回错误的原因吗?println(myCard)打印出卡值(“四个梅花”)那么,last for loop不应该打印出所有卡的值吗?@audiotic77-变量myDeck
不是数组,因此不能使用数组订阅访问其中的部分。如果要打印卡组中的第i张卡,需要在DeckofCards
中使用getter方法(例如:public card getCard(int i)){return deck[i];}
),然后您可以尝试System.out.println(myDeck.get(i));
。
DeckofCards myDeck = new 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++;
}
}
}
public Card[] getCards(){
return deck;
}
}