C# 无法将int类型隐式转换为bool
我正在创建一个21点游戏,到目前为止,我已经制作了一个纸牌类,甲板类和鞋子类。卡片类有效,甲板类有效,鞋子类有效,但我仍然在手工类上工作。我创建了一个GetSum方法,通过调用SymbolToValue方法获取每个卡片符号的值,并将这些值相加,来返回手中卡片的总和。但是我的SymbolToValue方法一直给我一个错误:不能隐式地将int类型转换为bool。我不知道如何解决这个问题 如有任何方向正确的帮助或指导,将不胜感激 这是我上手工课的资料C# 无法将int类型隐式转换为bool,c#,C#,我正在创建一个21点游戏,到目前为止,我已经制作了一个纸牌类,甲板类和鞋子类。卡片类有效,甲板类有效,鞋子类有效,但我仍然在手工类上工作。我创建了一个GetSum方法,通过调用SymbolToValue方法获取每个卡片符号的值,并将这些值相加,来返回手中卡片的总和。但是我的SymbolToValue方法一直给我一个错误:不能隐式地将int类型转换为bool。我不知道如何解决这个问题 如有任何方向正确的帮助或指导,将不胜感激 这是我上手工课的资料 class Hand { const In
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;
}
}
}
class-Hand
{
const Int32最大卡数=12;
私人卡[]_手=新卡[最大卡];
私人Int32(U cardCount);
公职人员()
{
_cardCount=0;
}
公共Int32卡计数
{
得到
{
返回卡计数;
}
}
公共作废卡片(卡片)
{
如果(_cardCount=\u cardCount)
{
抛出新异常(“无效条目”);
}
其他的
{
返回手[cardIndex];
}
}
Int32[]cardValues={1,2,3,4,5,6,7,8,9,10,10,10};
字符串[]cardSymbols={“A”、“2”、“3”、“4”、“5”、“6”、“7”、“8”、“9”、“10”、“J”、“Q”、“K”};
专用Int32 SymbolToValue(字符串符号)
{
int index=Array.IndexOf(cardSymbols,symbol);
如果(索引!=-1)
{
返回值[索引];
}
其他的
{
抛出新异常(“值不在表中”);
}
}
公共Int32 GetSum()
{
字符串符号;
Int32值;
对于(值=0;符号值;值++)
{
返回值;
}
}
}
看起来您正在尝试通过手部迭代来获取总和,请尝试以下方法获取总和:
public Int32 GetSum()
{
int value = 0;
for(int i = 0; i < _hand.length; i++)
{
value += SymbolToValue(_hand[i]);
}
return value;
}
public Int32 GetSum()
{
int值=0;
对于(int i=0;i<_hand.length;i++)
{
值+=SymbolToValue(_hand[i]);
}
返回值;
}
在应该存在条件的for循环中使用int32函数
在您的示例中,for循环期望布尔值为true/false,以执行循环中的代码还是继续
要使代码正常工作,需要存在一个条件
榜样
for(value = 0; value > SymbolToValue(symbol); value++)
{
//your stuff
}
如果变量“value”的值是提供的条件,则继续,否则循环,直到条件为真。这不是您的答案,但会解决您面临的问题。您没有提供
SymbolToValue
。它可能返回一个整数,而传递给for
的第二个表达式必须是布尔类型。不确定要在这里添加什么-它必须是布尔值,就是这样。并不是说你的循环不会因为返回而重复一次以上。试试for(value=0;value@zerkms SymbolToValue是倒数第二个方法for
循环中的第二个语句必须是布尔表达式。当它的计算结果为false
时,循环终止。@aw04:oops,我的ctrl-f-fu失败了