2014-10-05 149 views
0

我對c#非常陌生,並且在處理基本程序時收到此錯誤(錯誤只能將賦值,調用,遞增,遞減,等待和新對象表達式用作聲明),並無法弄清楚它出現的原因。if/else語句中的語法錯誤

if (pizzaDiameter >= 12 && pizzaDiameter < 16)// begin nested if statement 
{ 
    Console.WriteLine("A" + pizzaDiameter + "will yield 8 slices."); 
} 
else if (pizzaDiameter >= 16 && pizzaDiameter < 24)//Second pizza diameter range 
{ 
    Console.WriteLine("A" + pizzaDiameter + "will yield 12 slices."); 
} 
else if (pizzaDiameter >= 24 && pizzaDiameter < 30) 
{ 
    Console.WriteLine("A" + pizzaDiameter + "will yield 16 slices."); 
} 
else (pizzaDiameter >= 24 && pizzaDiameter <= 30) 
{ 
    Console.WriteLine("A" + pizzaDiameter + "will yield 24 slices."); 
} 
else // pizza diameter was not a whole number 
{ 
    Console.WriteLine("Pizza diameter must be between 12-36 inclusive.");// Error appears here. 
} 
else //pizza diameter must be between 12-36 
{ 
    Console.WriteLine("Pizza diameter must be a whole number."); 
} 
+2

你的第一個'else'應該是'否則,如果',否則你應該刪除條件語句。 – 2014-10-05 18:05:10

+1

我已經重新縮進您的代碼以顯示實際的縮進級別。有兩個'如果'缺少。 – poke 2014-10-05 18:07:09

+0

謝謝,我一直在盯着這一個小時不確定問題是什麼:) – Ryan 2014-10-05 18:07:52

回答

2

有一些問題與您的控制結構,即你得只有一個if(),而是三次else

另外,儘量去想問題,你會發現,你可以顯著簡化了整體結構(也跳過許多檢查):

if (pizzaDiameter < 12) // All diameters below 12 will use this branch. 
    Console.WriteLine("Your pizza seems to be too small."); 
else if (pizzaDiameter < 16) // You don't have to ensure it's bigger than 12, since those smaller already picked the branch above. 
    Console.WriteLine("A diameter of " + pizzaDiameter + " will yield 8 slices"); 
else if (pizzaDiameter < 24) // Again you won't have to care for less than 16. 
    Console.WriteLine("A diameter of " + pizzaDiameter + " will yield 12 slices"); 
// ... 
else 
    Console.WriteLine("Your pizza seems to be too big."); 
+0

它是我作業中代碼的一部分,並且特意告訴我做範圍,但我明白了爲什麼它會更有意義。 – Ryan 2014-10-05 18:10:57

+1

添加這些檢查沒有任何錯誤 - 它仍然有效 - 但基於您的編譯器,您正在執行的檢查超出必要。考慮到這些過時的特性,它不是過早的優化(加上它實際上取決於您的實際實施)。如果你只做if(),沒有else if(),那麼你需要所有的檢查。 – Mario 2014-10-05 18:12:35

+0

也許是爲了讓代碼在一個方法內執行的順序更明顯,還有更多的方法來編寫這些類型的代碼,但是在分配中,您通常不得不採用一種不太自然的方式。 – user1501127 2014-10-05 18:21:27