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

时间:2016-11-30 05:41:13

标签: java arrays arraylist constructor poker

我正在用Java制作一个扑克游戏,我们的老师不太了解Java,所以他的指示是由老师的帮助写的。我正在尝试将一个Hand.java类作为两个角色字符串的存储空间,用作卡片(即“2h”=“2心”)。

他的指示如下:

  • Hand类是要实例化的对象。它将代表一个 在游戏中单手,并且将主要由一系列的 卡。
  • 字段:ArrayList卡手中卡片的存储空间列表项
  • 构造函数:Hand(String [])使用a初始化卡片字段 卡片的双字符缩写数组。
  • 方法: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类的构造函数中的数组?我不明白他对“构造函数的解释:用卡片的两个字符缩写数组初始化卡片字段” 任何建议都非常感谢!

3 个答案:

答案 0 :(得分:1)

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

因此,每当您致电构造函数时,您都会使用新卡创建并初始化新手。

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

// alert(response.razorpay_payment_id);
if (typeof response.razorpay_payment_id == 'undefined' ||  response.razorpay_payment_id < 1) {
  redirect_url = '/you-owe-money.html';
} else {
  redirect_url = '/thnx-you-paid.html';
}
location.href = redirect_url;

在您的主要课程中,按以下方式启动 课程:

    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);
}

答案 1 :(得分:1)

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

  

&#34;构造函数:使用数组初始化卡片字段   卡片的双字符缩写&#34;

我认为您的老师在这里说您需要初始化数组字符串,然后将其放在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"});

答案 2 :(得分:0)

我也在研究同样的问题。当我运行我的代码时,我对所有内容都是null。如果你能帮忙解决这个问题。我认为这与card.java有关。