我正在用 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/