2012-02-07 79 views
0

我想看看第二個字符是否等於1,J,Q,K或A.然後我想爲這些情況中的每一個設置布爾值。這是一個正在寫作的二十一點程序。通過索引在字符串中選擇隨機字符

的甲板處理和單卡評價 卡是一個字符串,一個從卡的數組給定的隨機值,該值將類似於「HK」

bool delt1 = card[1].Equals("1"); 
bool deltJ = card[1].Equals("J"); 
bool deltQ = card[1].Equals("Q"); 
bool deltK = card[1].Equals("K"); 
bool deltA = card[1].Equals("A"); 

但我收到「索引超出了陣列的範圍」錯誤

有什麼建議嗎?

+1

有多少元素的數組中? – 2012-02-07 02:57:17

+0

卡是一個字符串,它將保存一個隨機卡的值,如「HK」,作爲心靈之王 – Peerkon 2012-02-07 02:58:58

+1

如果card是一個字符串,那麼它是一個char值的集合。你爲什麼要檢查一個字符是否等於一個字符串? – 2012-02-07 03:00:16

回答

1

這可能會解決您的問題,但你可能有其他人:

bool delt1, deltJ, deltQ, deltK, deltA; 
if (card.Length >= 2) 
{ 
    delt1 = card[1].Equals('1'); 
    deltJ = card[1].Equals('J'); 
    deltQ = card[1].Equals('Q'); 
    deltK = card[1].Equals('K'); 
    deltA = card[1].Equals('A'); 
} 
else 
    throw new Exception("Not enough characters in card to perform this check"); 
+0

我不會在這裏拋出異常來處理邏輯流。例外情況適用於特殊事件。 – 2012-02-07 15:00:48

+0

@DarrenYoung - 如果OP的卡串沒有按照他們期望的方式組成,那麼我會稱之爲*例外事件*。 – 2012-02-07 17:18:36

+0

這絕不是應該拋出事件的情況。你可以完全控制這裏的邏輯,你應該相應地處理它,並且以比例外更便宜的方式處理它! – 2012-02-07 17:45:37