2016-04-06 24 views
1

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

     }  
    } 

} 
} 
+2

为什么你认为你的'Deck'类有'get'方法? – Savior

+0

我不这么认为。我想我可以在主要方法 – denholm

+0

中使用arraylist类中的get方法然后执行此操作。不要做'd.get(i)'。 'd'是'Deck',而不是'ArrayList'。 – Savior

回答

1

您可以实现一个getter在DeckArrayList或添加get方法到Deck类和委托给ArrayList

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

非常感谢! – denholm

1

我想你的意思是这样:

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

当然,首先你必须实现getCards()方法的类Deck

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

非常感谢! – denholm

1

你应该做的方法真正得到你的卡的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; 
} 
} 
+0

非常感谢! – denholm