如何访问实例中的数组

时间:2014-08-18 19:17:42

标签: java arrays

我正在制作纸牌游戏,我有以下代码部分(一小段摘录):


Hand[] hands;

hands = new Hand[t];

for (i = 1; i > t; i++) {
    hands[i] = new Hand();
}

public class Hand {

    Hand() {
        Card[] hand;

        hand = new Card[52];
    }
}

如何访问Hand对象中的数组?

例如,假设我有一个名为Hand的{​​{1}}类的实例,如何访问hand1对象中的数组hand

执行hand1无效。

3 个答案:

答案 0 :(得分:2)

  

执行hand1.hand[x]无效。

您正在构造函数中声明您的“字段”。

你必须在外面声明它,否则它只是一个局部变量。

public class Hand {
     Card[] hand;

     Hand() {
       hand = new Card[52];
    }
}

但是,我认为你知道封装,所以我不会开始这个主题。

答案 1 :(得分:2)

您应该定义一个getter和一个setter:

public Card getCard (int i)
    throws SomeException()
{
    if (i < 0 || i >= hand.length)
        throw new SomeException();
    return hand[i];
}

public void setCard (Card theCard, int i)
    throws SomeException()
{
    if (i < 0 || i >= hand.length)
        throw new SomeException();
    hand[i] = theCard;
}

当然,您应该为i添加范围检查。

另外,正如Mik正确评论的那样,将手定义在正确的位置(构造函数之外):

public class Hand {
    private Card[] hand;
    Hand() {
        hand = new Card[52];
    }
}

答案 2 :(得分:1)

  Hand() {
    Card[] hand;

    hand = new Card[52];
}

当你在Hand()构造函数中声明它时,Card [] hand是一个局部变量。如果你想使用这个变量,你应该全局声明它:

private Card[] hand;
  Hand() {
    hand = new Card[52];
}

并且有吸气剂和吸气剂setter方法检索私有变量(这称为'封装')。我认为没有必要进入那些