Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/328.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Java中创建对象数组类的实例_Java_Arrays_Class_Initialization_Instance - Fatal编程技术网

在Java中创建对象数组类的实例

在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

我是Java新手,当我尝试创建DeckofCards类的实例时,我的主函数中出现了一个错误。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
        }
    }
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;

     }
   }