无效的表达术语“else”| ;预期(C#)

时间:2012-11-25 17:28:14

标签: c#

这可能是我到目前为止遇到的最奇怪的错误之一。

private void BUEquals_Click(object sender, EventArgs e)
            {
                input2 = float.Parse(TBAnswer.Text);

                if (choice == 0)
                    TBAnswer.Text = (input1 + input2).ToString();
                else if (choice == 1)
                    TBAnswer.Text = (input1 - input2).ToString();
                    TBStored.Text = TBStored.Text + '-' + (input2).ToString();
                else if (choice == 2)
                    TBAnswer.Text = (input1 * input2).ToString();
                else
                    TBAnswer.Text = (input1 / input2).ToString();
                input1 = 0;
            }

自从我添加了第9行以来,第10行一直在推迟我无法理解的错误。 “else”获得一个红色下划线,表示它是一个无效的表达式术语,“if”获得一个红色下划线,表示预期有一个分号。

有什么想法吗?我老实说在这里什么都没有。提前谢谢!

编辑:好的,事实证明这是我做过的最新秀错误。谢谢您的帮助!想知道自己多长时间才能看到它......

4 个答案:

答案 0 :(得分:5)

你在第二个案例陈述中缺少{}。

  if (choice == 0)
       TBAnswer.Text = (input1 + input2).ToString();
   else if (choice == 1)
   {   // Added
       TBAnswer.Text = (input1 - input2).ToString();
       TBStored.Text = TBStored.Text + '-' + (input2).ToString();
   }   // Added
   else ...

答案 1 :(得分:2)

您忘记在代码中用括号括起两行。

else if (choice == 1)
   TBAnswer.Text = (input1 - input2).ToString();
   TBStored.Text = TBStored.Text + '-' + (input2).ToString();
else if (choice == 2)

应该是:

else if (choice == 1) {
   TBAnswer.Text = (input1 - input2).ToString();
   TBStored.Text = TBStored.Text + '-' + (input2).ToString();
} else if (choice == 2)

答案 2 :(得分:0)

第二个else if是两行,因此应该在一个块中。

由于您不使用块,编译器会看到if语句已完成,因为它没有立即跟随,否则如果。

要解决此问题,只需将其他第二个块作为块:

            if (choice == 0)
                TBAnswer.Text = (input1 + input2).ToString();
            else if (choice == 1)
            {
                TBAnswer.Text = (input1 - input2).ToString();
                TBStored.Text = TBStored.Text + '-' + (input2).ToString();
            }
            else if (choice == 2)
                TBAnswer.Text = (input1 * input2).ToString();
            else
                TBAnswer.Text = (input1 / input2).ToString();

答案 3 :(得分:0)

此处逐行说明,留下可以接受的行

private void BUEquals_Click(object sender, EventArgs e)
        {
          1:  input2 = float.Parse(TBAnswer.Text);

          2:  if (choice == 0)
          3:      TBAnswer.Text = (input1 + input2).ToString();
          4:  else if (choice == 1)
          5:      TBAnswer.Text = (input1 - input2).ToString();
          6:      TBStored.Text = TBStored.Text + '-' + (input2).ToString();

第6行可能存在一个问题,即如果需要执行多于1个语句的“if”条件必须使用花括号“{}”包含在块中。

          7:  **else** if (choice == 2)

第7行存在问题,因为else应始终与IF结合使用。由于您没有对使用条件执行的语句使用括号,因此编译器发现了else语句的问题 -

          8:      TBAnswer.Text = (input1 * input2).ToString();
            else
                TBAnswer.Text = (input1 / input2).ToString();
            input1 = 0;
        }