我目前正在编写一个简单的骰子游戏,我遇到了一个让我困惑的错误,这是我的代码。
foreach (var die in Dice.rolls)
{
Console.WriteLine(die.ToString());
}
if (player.score += score >= goal)
{
playing = false;
Console.WriteLine("{0} has won the game!", player.name);
Console.WriteLine("Please press any key to end the game");
Console.ReadKey();
}
else
{
player.score += score;
}
我遇到的问题是:
if (player.score += score >= goal)
抛出错误告诉我我不能在int和bool上使用它,但if语句中的所有变量都是int。此外还有几行:
player.score += score;
没有给我任何错误。
答案 0 :(得分:3)
可以优先运营吗?尝试:
if ( (player.score += score) >= goal)
虽然,在我看来你应该: a)将其分为两行:
player.score += score;
if (player.score >= goal)
或b)将行更改为:
if (player.score + score > goal)
就目前而言,也许这是故意的,如果不是> =目标,则player.score最终将得分加两次,因为它会作为if的一部分添加,然后作为正文别的。
答案 1 :(得分:1)
这是运营商优先权的问题。比较运算符> =具有更高的优先级,因此实际上您试图通过布尔比较player.score
的结果递增score >= goal
。
您可以使用括号来解决此问题或简化表达,例如
player.score += score;
if (player.score >= goal)
您可以在此处查看更多信息https://msdn.microsoft.com/en-us/library/2bxt6kc4.aspx