java - 我是否需要在构造函数中用另一个数组初始化 ArrayList 字段?

标签 java arrays arraylist constructor poker

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

他的指示如下:

  • Hand 类是一个要实例化的对象。它将代表一个 游戏中的单手牌,主要由一系列 卡片。
  • 字段:ArrayList卡片手牌列表项的存储空间
  • 构造函数:Hand(String[]) 使用初始化卡片字段 卡片的两个字符缩写数组。
  • 方法: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);
}

(进一步说明)最终测试应在主程序中使用以下命令序列。节目片段:

Hand h = new Hand("3c", "4s", "5d", "6h", "7h"); //program is upset with this line
h.printHand();
h.addCard("8d");
h.addCard("3d");

应该输出:

Printing Hand:  5 cards  –  3c  4s  5d  6h  7h
Adding Card:    Eight of Diamonds  (8d)
Adding Card:    Three of Diamonds  (3d)

我疯了,还是我真的需要 Hand 类的构造函数中的数组?我不明白他对“构造函数:使用卡片的两个字符缩写数组初始化卡片字段”的解释 非常感谢任何建议!

最佳答案

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

" Constructor: Initializes the cards field with an array of two-character abbreviations for cards"

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

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 - 我是否需要在构造函数中用另一个数组初始化 ArrayList 字段?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40881107/

相关文章:

java - 如何让线程仅添加到一个带有同步整数的数组列表

java - Struts2 中的全局资源包

java - 嵌套类型不能隐藏封闭类型

Java:子类构造函数的 super() 如何/何时参与实例流?

javascript - 显示投票数最多的数组

java - 向对象添加唯一 ID (UUID)

java - 将字符串数组添加到 ArrayList

java - 如何在 ant 中匹配 Eclipse 类路径功能?

c++使用foreach使数组为空

arrays - ionic 和 Angular : Inserting Function Names with ngFor