2012-06-16 55 views
2

我正在做一個口袋妖怪遊戲,本節給我3個錯誤: 「無效的表達術語';' (CS1525)」和 「預期(CS1002)」獲取涉及';'的語法錯誤

public class HeldItem 
{ 
    public static int CritCalc(bool item,bool skill, bool UsedItem,int dmg) 
    { 
     Random rand=new Random(); 
     Action jump=new Action(); 
     int i = rand()%100; 
     double CritPerc = 6.25; 
     if(item==true) 
      CritPerc=12.5; 
     else if(skill==true) 
      CritPerc=12.5; 
     else if(UsedItem==true) 
      CritPerc=12.5; 
     else if((item==true & skill== true) || (item==true & UsedItem == true) || (skill==true & UsedItem==true)) 
       CritPerc=25%; 
     else if(item==true & skill == true & UsedItem==true) 
      CritPerc=33.3%; 
     if(Action) //jump 
      CritPerc = 50%; 
     if(i<CritPerc) 
      dmg=2*dmg; 
     else if(i>CritPerc) 
      dmg==dmg; 
     return dmg; 
    } 
} 

}

也許這是一個愚蠢的問題,但我不知道它是什麼

+0

你可能打算使用''&&(邏輯),而不是' &'(按位)。 – Pubby

+4

只要快速看一下事物,CritPerc = 25%就沒有意義。它應該是.25或「25%」。代碼中的其他兩個地方也是如此。編輯:由於CritPerc是雙倍的,它應該是25.0根據您的慣例。 – Bee

+1

@Pubby - &運算符對整型操作數執行按位邏輯AND操作,對bool操作數執行邏輯AND操作。 - http://msdn.microsoft.com/en-us/library/e669ax02 – adatapost

回答

10

不能指定在C#百分比。

您有以下行:

CritPerc=25%; 
CritPerc=33.3%; 
CritPerc = 50%; 

這是無效的(%意味着在C#中模運算符)。

相反,您可能希望將值指定爲雙浮點值。

CritPerc=0.25; 
CritPerc=0.333; 
CritPerc = 0.50; 
+0

很快! –

+2

具有諷刺意味的是'我'是用這個非常模數的運算符得到的。 –

1

這行:

dmg == dmg; 

啊,致命的 '=' 的錯誤。

2

c#中的%(%)運算符表示模操作,它取兩個 操作數。但你給一個。所以它會給出錯誤。

而不是

CritPerc=25%; 

CritPerc=.25; 

CritPerc=25/100; 

dmg == dmg

會導致錯誤。

1

你有傷害==傷害是錯誤的操作,如果DMG已經擁有正確的值只返回,DMG =傷害不言而喻