通过索引在字符串中选择随机字符

问题描述:

我想看看第二个字符是否等于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

这可能会解决您的问题,但你可能有其他人:

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