Java 使用对象数组中的对象。。。?
所以我有一个手部对象,它是一组卡片对象。这是我的手工构造器:Java 使用对象数组中的对象。。。?,java,arrays,object,Java,Arrays,Object,所以我有一个手部对象,它是一组卡片对象。这是我的手工构造器: public Hand(){ Card[] Hand = new Card[5]; } 这是我的卡片构造器: public Card(int value, char suit){ if (value < 0 || value > 13) { System.err.println("Twilight Zone Card"); System.exit(1); }
public Hand(){
Card[] Hand = new Card[5];
}
这是我的卡片构造器:
public Card(int value, char suit){
if (value < 0 || value > 13)
{
System.err.println("Twilight Zone Card");
System.exit(1);
}
this.value = value;
if (suit == 'c')
suit = 'C';
if (suit == 'd')
suit = 'D';
if (suit == 'h')
suit = 'H';
if (suit == 's')
suit = 'S';
if (suit == 'C' || suit == 'D' || suit == 'H' || suit == 'S')
{
this.suit = suit;
}
else
{
System.err.println("No such suit.");
System.exit(1);
}
}
所以我试着在Hand类中创建一个getCard函数,但我不知道如何访问,比如说手上的第二张卡,因为它不允许我进行Hand[2],因为它不将其视为数组。我现在很挣扎。我该怎么办
public class Hand {
Card[] hand;
public Hand() {
hand = new Card[5];
}
public Card getCard(int index) {
return hand[index];
}
}
player1.getCard(2).equals(player2.getCard(2)) // avoid using "==" to test equality unless you know what you are doing.
编辑:
在java中,“==”可以用于测试基本值,但不能用于测试对象,除非您确实想测试它们是否是相同的对象,否则您可以在java中找到大量关于平等性测试的伟大答案
因此,您必须在
Card
中实现/重写适当的方法来测试卡的相等性。首先,您需要在您的Card类中设置equals和hachCode
public int hashCode(){
// its simple but just solve the purpose
return value + suit;
}
public boolean equals(Object other){
// Check for null, object type...
Card otherCard = (Card) other;
return this.value==otherCard .value && this.suit==otherCard.suit;
}
现在可以安全地使用卡片类型,同时比较它的两个实例并在集合中使用,如List、Set
在Hand类中,在给定索引处具有卡片的访问器方法
class Hand{
// your code.
public Card getCardAtIndex(int i){
// check size, null
return theCardArray[i];
}
}
Player1
未声明为数组类型。您不能使用[index]
符号。此外,您当前设置构造函数的方式是,Card[]Hand=new Card[5]
是一个局部变量,基本上在构造完成后就可以再见了。我喜欢将System.exit()
作为异常状态处理,但您是否尝试过抛出异常
?在您的代码段中,Hand是一个类。Hand对象应该有一个名为Hand的字段(错误的命名方案,至少以小写字母“h”开头)。手对象不是数组。但是您在构造函数中将数组声明为局部变量,而不是类中的字段(Card[]hand;
hand=new Card[7]
)。还添加了一些边缘大小写处理。
class Hand{
// your code.
public Card getCardAtIndex(int i){
// check size, null
return theCardArray[i];
}
}