2015-11-30 43 views
0

我正在努力工作我的第一個程序,一個二十一點的任務。我在我的BlackJackDeck類中構建了一堆方法,現在我想開始在我的程序類中實現它們,但是當我試圖添加一張卡時,我得到了一個超出範圍的異常。我試着做一個userHand.Add,我試着做一個userHand [0] =,但我只是沒有得到這個實現。我猜我的BlackJackDeck類中的addCard方法存在大問題。我也嘗試使用Cards [0]而不是.Count方法。卡片是此時隨機卡片的列表。如何使用其他課程的方法來添加卡片(二十一點遊戲)?

BlackJackDeck.cs

public Card addCard() 
    { 

     Card cardToAdd = Cards[Cards.Count-1]; 
     Cards.RemoveAt(Cards.Count-1); 
     return cardToAdd; 
    } 

計劃CS

class Program 
    { 
     static List<Card> userHand; 
     static List<Card> dealerHand; 
     static BlackJackDeck blackJackDeck; 



     static void Main(string[] args) 
     { 

      blackJackDeck = new BlackJackDeck(); 
      blackJackDeck.shuffleCards(); 
      DealHand(); 
     } 
     static void DealHand() { 
      userHand = new List<Card>(); 
      userHand[0] = (blackJackDeck.addCard()); 
      userHand[1] = (blackJackDeck.addCard()); 
      Console.WriteLine("Card1: {0} of {1}", userHand[0].Face, userHand[0].Suit); 
      Console.WriteLine("Card2: {0} of {1}", userHand[1].Face, userHand[1].Suit); 
      Console.ReadLine(); 

     } 
     } 
+0

也許當你嘗試添加第一個購物車卡片[Cards.Count-1],這將是卡片[-1]這是錯誤 –

+3

嘗試使用調試器 –

+0

我試過了,只是不太好調試器 – ScottVMeyers

回答

2

唯一的例外是不是被扔在addCard()。問題出在userHand。由於列表是空的,因此索引0中沒有任何內容可以分配右側值,因此會引發異常。 範圍這裏指的是定義List的值的範圍;對於空列表,範圍也是一個空集,因此ArgumentOutOfRangeException其中所討論的參數是所用的索引(在這種情況下爲0)。要將元素添加到列表中使用Add方法:

userHand = new List<Card>(); 
userHand.Add(blackJackDeck.addCard()); 
userHand.Add(blackJackDeck.addCard()); 

沒有看到如何BlackJackDeck.Cards被初始化,我不能說addCard()不會導致異常,但上面至少應該DealHand()解決您的問題。

+0

我知道我以前曾嘗試過,但我想我可能有資本化問題。現在工作,謝謝! – ScottVMeyers