Java 是否需要使用构造函数中的另一个数组初始化ArrayList字段?

Java 是否需要使用构造函数中的另一个数组初始化ArrayList字段?,java,arrays,arraylist,constructor,poker,Java,Arrays,Arraylist,Constructor,Poker,我正在用Java做一个扑克游戏,我们的老师不太懂Java,所以他的说明是由一个老师的助手写的。我试图创建一个Hand.java类,作为两个字符串的存储空间,这两个字符串将充当卡片(即“2h”=“2个红心”) 他的指示如下: Hand类是要实例化的对象。它将代表一个 游戏中的单手,主要由一系列 卡片 字段:ArrayList卡片现有卡片列表项的存储空间 构造函数:Hand(字符串[])使用 卡片的两个字符缩写的数组 方法:void addCard(String)添加由 卡片字段的缩写 以下是我

我正在用Java做一个扑克游戏,我们的老师不太懂Java,所以他的说明是由一个老师的助手写的。我试图创建一个Hand.java类,作为两个字符串的存储空间,这两个字符串将充当卡片(即“2h”=“2个红心”)

他的指示如下:

  • Hand类是要实例化的对象。它将代表一个 游戏中的单手,主要由一系列 卡片
  • 字段:ArrayList卡片现有卡片列表项的存储空间
  • 构造函数:Hand(字符串[])使用 卡片的两个字符缩写的数组
  • 方法:void addCard(String)添加由 卡片字段的缩写
以下是我目前掌握的情况:

import java.util.*;
public class Hand {

    public String[] array;
    ArrayList<String> cards = new ArrayList<String>();

public Hand(String[] array) {
    this.array = array;
}

public void addCard(String card) {
    cards.add(card);
}
应输出:

Printing Hand:  5 cards  –  3c  4s  5d  6h  7h
Adding Card:    Eight of Diamonds  (8d)
Adding Card:    Three of Diamonds  (3d)
是我疯了,还是我真的需要Hand类的构造函数中的数组?我不理解他对“构造函数:用一组两个字符的卡片缩写来初始化卡片字段”的解释
任何建议都将不胜感激

无需将传递的数组保存为Hand类中的字段,它不会在任何地方使用。为了初始化主卡列表,这个数组只是传递给构造函数

所以每次你调用构造器时,你都在用新卡创建和初始化一个新牌

您可以从传递的数组中初始化构造函数中的cards字段,这样您的类将如下所示:

    import java.util.*;
public class Hand {
    ArrayList<String> cards = new ArrayList<String>();

public Hand(String[] array) {
    cards = Arrays.asList(array);
}

public void addCard(String card) {
    cards.add(card);
}
Hand hand = new Hand(new String[]{"3c", "4s", "5d", "6h", "7h"})

如果你的老师说,你需要一个带有
字符串数组的参数的构造函数。但是,在构造函数中初始化一个由2个字符串组成的数组之后,我认为您的方法是正确的。您还需要将其添加到
阵列列表
,以便将卡放在同一容器中

构造函数:使用 卡片的两个字符缩写”

我想您的老师在这里说,您需要初始化数组字符串,然后将其放入
cards
字段,这是一个
数组列表
。你可以这样说:

public Hand(String[] array) {
    cards.addAll(Arrays.asList(array));
}
顺便说一句,将您的初始化更改为:

Hand h = new Hand("3c", "4s", "5d", "6h", "7h");
为此:

Hand h = new Hand(new String[]{"3c", "4s", "5d", "6h", "7h"});

我也在研究同样的问题。当我运行我的代码时,我得到了空值。如果你能帮忙的话。我认为这与卡片有关。java

考虑
Hand h=new Hand(新字符串[]{“3c”、“4s”、“5d”、“6h”、“7h”)
首先,我想你要么需要
数组
要么
,而不是两者都需要,而且新手需要数组,所以
新手(新字符串[]{“3c”、“4s”、“5d”、“6h”、“7h”})
应该删除编译错误。很抱歉,我很难理解您发布的第一个代码段。那么我会这么做
public-class-Hand{public-String[]array;ArrayList-cards=new-ArrayList();public-Hand(String[]array){cards=Arrays.asList(array);}
由于不需要将传递的数组保存在单独的字段中,因此它的内容已保存在卡片列表中。如果它对您有效,请检查我的答案以帮助他人,谢谢。如果它有效,请检查我的答案以帮助他人。谢谢:)如果您发布代码,我可以查看,如果没有,请检查我的代码:
Hand h = new Hand(new String[]{"3c", "4s", "5d", "6h", "7h"});