2014-12-08 120 views
-2

我創建二十一點遊戲,到目前爲止,我已經做了卡類,甲板類和鞋子類。卡班的作品甲板班的作品,鞋類的作品,但我仍然在我的手上課。我創建了一個GetSum方法通過調用SymbolToValue方法以獲得用於每個卡符號的值和將所述值高達返回的在手的牌的總和。但我SymbolToValue方法不斷給我的錯誤不能int類型隱式轉換爲布爾。我不知道如何解決這個問題。不能隱式轉換int類型爲bool

在正確的方向上沒有任何幫助或指導,將不勝感激

這裏就是我有我的手類

class Hand 
{ 
    const Int32 MAX_CARDS = 12; 
    private Card[] _hand = new Card[MAX_CARDS]; 
    private Int32 _cardCount; 
    public Hand() 
    { 
     _cardCount = 0; 
    } 
    public Int32 CardCount 
    { 
     get 
     { 

      return _cardCount; 
     } 
    } 
    public void AddCard(Card card) 
    { 

     if (_cardCount < MAX_CARDS) 
     { 
      throw new Exception("Cannot of more than 12 cards in a hand"); 
     } 
     else 
     { 
      _hand.Add(card); 
      _cardCount++; 


     } 
    } 
    public Card GetCard(Int32 cardIndex) 
    { 
     if (cardIndex >= _cardCount) 
     { 
      throw new Exception("Invalid Entry"); 
     } 
     else 
     { 
      return _hand[cardIndex]; 
     } 
    } 
    Int32[] cardValues = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 10, 10, 10 }; 
    String[] cardSymbols = { "A", "2", "3", "4", "5", "6", "7", "8", "9", "10", "J", "Q", "K" }; 
    private Int32 SymbolToValue(String symbol) 
    { 
     int index = Array.IndexOf(cardSymbols, symbol); 
     if (index != -1) 
     { 
      return cardValues[index]; 
     } 
     else 
     { 
      throw new Exception("Value Not In Table"); 
     } 
    } 
    public Int32 GetSum() 
    { 
     String symbol; 
     Int32 value;   
     for(value = 0; SymbolToValue(symbol); value++) 
     { 
      return value; 
     } 

    } 
} 
+2

您沒有提供'SymbolToValue'。據推測它返回一個整數,而第二表達傳遞給'for'必須是布爾類型的。不知道在這裏添加什麼 - 它必須是布爾值,就是這樣。並不是說你的循環不會因爲返回而多次迭代。 – zerkms 2014-12-08 01:21:09

+0

在'GetSum'方法中嘗試'for(value = 0; value <= SymbolToValue(symbol); value ++)'。 – pushpraj 2014-12-08 01:23:21

+1

@zerkms SymbolToValue是倒數第二個方法 – aw04 2014-12-08 01:25:25

回答

0

貌似你試圖遍歷拿到手的總和,試試這個爲你的GetSum:

public Int32 GetSum() 
{ 
    int value = 0; 

    for(int i = 0; i < _hand.length; i++) 
    { 
     value += SymbolToValue(_hand[i]); 
    } 

    return value; 
} 
0

您正在使用for32循環條件應該存在的int32函數。

在您的示例中,for循環期望布爾值true/false是執行循環中的代碼還是繼續。

爲您的代碼工作,你需要一個條件存在。

示例;

for(value = 0; value > SymbolToValue(symbol); value++) 
{ 
    //your stuff 
} 

如果變量「價值」的價值是提供再繼續,否則循環播放,直到條件成立的情況下。這不是你的答案,但會解決你所面臨的問題。

相關問題