2017-04-24 226 views
-4

我目前正在編寫一個簡單的骰子游戲,並遇到一個讓我困惑的錯誤,這是我的碼。CS0019 t運算符'+ ='不能應用於'int'和'bool'類型的操作數

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) 

拋出了一個錯誤,告訴我,我不能用它在廉政局和布爾的,但所有的變量if語句是INT的。此外在這裏幾行:

player.score += score; 

不給我任何錯誤。

+0

更多信息,您不能在同一行做這兩種操作。只需先添加分數,然後再進行比較。你告訴編譯器要做的是解決score> = goal並將其添加到player.score中,從而產生錯誤。 –

回答

3

可能是操作的優先級?嘗試:

if ((player.score += score) >= goal) 

雖然,在我看來,你應該: 一)把它分解成兩行:

player.score += score; 
if (player.score >= goal) 

或b)將該行更改爲:

if (player.score + score > goal) 

現在,也許這是故意的,player.score最終會將得分加兩次,如果它不是> = goal,那麼它將作爲if的一部分添加,然後作爲else的主體。

+0

是的,這是操作的優先級,歡呼夥計 – newbie123

+0

它分爲兩行更清晰。試圖編寫簡潔的代碼,你增加和檢查一行中的變量可能是未來錯誤的來源。 – AlainD

1

這是運營商優先級的問題。比較運算符> =具有更高的優先級,所以本質上,您試圖通過布爾比較score >= goal的結果增加player.score

您可以使用括號來解決這個問題或簡化您的表達式,例如,

player.score += score; 
if (player.score >= goal) 

你可以看一下這裏https://msdn.microsoft.com/en-us/library/2bxt6kc4.aspx

相關問題