ArrayList get方法有问题

时间:2016-04-06 22:23:45

标签: java arraylist

使用" get"时遇到问题ArrayList类中的方法。

主要方法是在ArrayList中创建一副牌,然后显示所有牌。我正在寻找一个解释,说明我为什么会在" d.get(i)"而它是我的主要方法(游戏类)。如果我在甲板课上使用它,它可以正常工作。

游戏课程:

package game;
import java.util.*;

public class Game {

public static void main(String[] args) {

    /*Card f = new Card(2,7);
    System.out.println(f.toString());*/

    Deck d = new Deck();
    int i = 0;

    while(i < 52)
    {
        //where error occurs:
        Card k = d.get(i);//get is underlined red
        System.out.println(d.toString());
        i++;
    }

}

}

卡类:

package game;

public class Card {

private int suit, value;
private String[] cardSuit = {"Spades", "Diamonds", "Hearts", "Clubs"};
private String[] cardValue = {"Ace", "King", "Queen", "Jack", "10",
                               "9", "8", "7", "6", "5", "4", "3", "2"};

public Card(int cSuit, int cValue)
{
    suit = cSuit; 
    value = cValue;
}

public String toString()
{
    String cardInfo = cardValue[value] + " of " + cardSuit[suit];

    return cardInfo;
}

public int getValue()
{
    return value;

}

public int getSuit()
{
    return suit;
}


}

甲板课程:

package game;
import java.util.*;

public class Deck {

private ArrayList<Card> deck;

public Deck(){

    deck = new ArrayList<>();

    for(int i = 0;i<4;i++){
        for(int j = 0;j<13;j++){

        deck.add(new Card(i,j));

        }       
    }

}
}

3 个答案:

答案 0 :(得分:1)

我认为你打算这样做:

Card k = d.getCards().get(i);

当然,首先您必须在课程getCards()中实施Deck方法:

public ArrayList<Card> getCards() {
    return deck;
}

答案 1 :(得分:1)

您应该制作一个方法来实际获取您的Card ArrayList:

package game;
import java.util.*;

public class Deck {

private ArrayList<Card> deck;

public Deck(){

    deck = new ArrayList<>();

    for(int i = 0;i<4;i++){
        for(int j = 0;j<13;j++){

        deck.add(new Card(i,j));

        }       
    }

}

public ArrayList<Card> getDeck() {
    return deck;
}
}

答案 2 :(得分:1)

您可以为ArrayList类中的Deck实现getter,也可以向Deck类添加get方法并委托给ArrayList

public Card get(int index) {
    return this.deck.get(index);
}