2016-11-20 64 views
-1

所以基本上我正在製作一張牌的遊戲,我試圖從我的牌組頂部移除一張牌certainAmount,然後將certainAmount作爲certainAmount我不明白爲什麼我的邏輯是不正確的java陣列和arraylist中的牌遊戲

private ArrayList<Card> cards; 

public Deck() { 
    cards = new ArrayList <Card>(); 

    for (int type= 0; type<=4; type++){ 
     for (int value=1; value<=9; value++){ 
      Card newCard = new Card (value, type); 
      cards.add(newCard); 
     } 
    } 

} 

public Deck(Deck other) { 
    cards = new ArrayList<Card> (other.cards); 
} 


public Card getCardAt(int position) { 
    Card gottenCard = cards.get(position); 
    return gottenCard; 
} 


public int getNumCards() { 
    int sizeOfArrayList = cards.size(); 
    return sizeOfArrayList; 
} 

//remove certain amount (numCards) of cards from top of arraylist 
public Card[] deal(int numCards) { 
    Card[] newArray = new Card[numCards]; 

    //assigning removed card to new array positions 
    for (int newArrayPosition=0; j<newArrayPosition;newArrayPosition++) { 
     newArray[j] = cards.remove((cards.size()-1)); 
    for (int newArrayPosition=0; j<newArrayPosition;newArrayPosition++) { 
     newArray[j] = cards.remove((cards.size()-1)); 
    } 
    return newArray; 
} 
+0

你如何知道你的邏輯不正確? –

+0

我我們提交服務器中得到的錯誤說:java.lang.AssertionError:期望值<0>卻被:<4> @cainiaofei – emmynaki

+3

我想你最好發佈更詳細的代碼 –

回答

0

所以我從你的問題了解到,我相信我有一個答案,可以幫助你。我認爲在這種情況下使用ArrayList是必不可少的。 ArrayList允許輕鬆移除和添加值,而無需擔心'nullPointerExceptions'。因此,我的答案使用包含代表卡的整數的ArrayList。在你的場景中,只需在ArrayList的通用參數中將'Card'替換爲'Integer'即可。我的代碼:

import java.util.ArrayList; 

public class Answers { 

    public static void main(String[] args) { 
     Answers main = new Answers(); 
     // Original Deck 
     ArrayList<Integer> cards = new ArrayList<Integer>(); 

     // Add to original deck 
     cards.add(1); 
     cards.add(2); 
     cards.add(3); 
     cards.add(4); 
     cards.add(5); 

     System.out.println("Removed Cards Deck: " + main.deal(3, cards)); 
      // Removed Cards Deck: [1, 2, 3] 

      System.out.println("Original Deck: " + cards); 
      // Original Deck: [-1, -1, -1, 4, 5] 
    } 

    public ArrayList<Integer> deal(int numCards, ArrayList<Integer> deckOfCards) { 
      // Deck that will contain the removed cards 
      ArrayList<Integer> newCardsArray = new ArrayList<Integer>(); 

      for (int i = 0; i < numCards; i++) { 
       newCardsArray.add(deckOfCards.get(i)); 
        // Add to remove cards deck 

       deckOfCards.set(i, -1); 
        // Set taken cards in original deck to '-1' 
      } 
      return newCardsArray; 
    } 

} 

希望這有助於!

+0

我知道這樣會更容易!然而,我們項目的說明是爲了讓我們不使用數組列表來處理交易方法 - 我不確定哈哈的目的是什麼,但哈哈 – emmynaki