我正在用Java制作一个扑克游戏,我们的老师不太了解Java,所以他的指示是由老师的帮助写的。我正在尝试将一个Hand.java类作为两个角色字符串的存储空间,用作卡片(即“2h”=“2心”)。
他的指示如下:
这是我到目前为止所拥有的:
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类的构造函数中的数组?我不明白他对“构造函数的解释:用卡片的两个字符缩写数组初始化卡片字段” 任何建议都非常感谢!
答案 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有关。