2014-10-05 152 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