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