C# 无法将int类型隐式转换为bool

C# 无法将int类型隐式转换为bool,c#,C#,我正在创建一个21点游戏,到目前为止,我已经制作了一个纸牌类,甲板类和鞋子类。卡片类有效,甲板类有效,鞋子类有效,但我仍然在手工类上工作。我创建了一个GetSum方法,通过调用SymbolToValue方法获取每个卡片符号的值,并将这些值相加,来返回手中卡片的总和。但是我的SymbolToValue方法一直给我一个错误:不能隐式地将int类型转换为bool。我不知道如何解决这个问题 如有任何方向正确的帮助或指导,将不胜感激 这是我上手工课的资料 class Hand { const In

我正在创建一个21点游戏,到目前为止,我已经制作了一个纸牌类,甲板类和鞋子类。卡片类有效,甲板类有效,鞋子类有效,但我仍然在手工类上工作。我创建了一个GetSum方法,通过调用SymbolToValue方法获取每个卡片符号的值,并将这些值相加,来返回手中卡片的总和。但是我的SymbolToValue方法一直给我一个错误:不能隐式地将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;
       }

    }
}
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失败了