1

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

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

4 回答 4

5

您在第二个 case 语句周围缺少 { }。

  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 ...
于 2012-11-25T17:29:39.670 回答
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)
于 2012-11-25T17:30:17.417 回答
0

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

由于您不使用块,因此编译器会看到该if语句是完整的,因为它没有立即跟随 else 或 else if。

要解决此问题,只需将第二个 else 设置为块:

            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();
于 2012-11-25T17:32:13.653 回答
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 行可能存在一个问题,条件“if”如果需要执行超过 1 个语句,则必须使用花括号“{ }”将其括在一个块中。

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

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

          8:      TBAnswer.Text = (input1 * input2).ToString();
            else
                TBAnswer.Text = (input1 / input2).ToString();
            input1 = 0;
        }
于 2012-11-25T17:41:45.490 回答