1

これはおそらく、これまでに遭遇した中で最も奇妙なエラーの 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」にはセミコロンが必要であることを示す赤い下線が付きます。

何か案は?正直なところ、ここには何もありません。前もって感謝します!

編集: OK、これは私が今まで犯した中で最も新人っぽいエラーであることが判明しました。助けてくれてありがとう!一人でこれを見るのにどれくらいの時間がかかったのだろうか...

4

4 に答える 4

5

2 番目の 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

コード内の 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

2番目else ifは2行であるため、ブロック内にある必要があります。

ブロックを使用しないため、コンパイラーは、ステートメントのif直後にelseまたはelse ifが続かなかったため、ステートメントが完了したと見なします。

これを修正するには、2番目の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" 条件を、花かっこ "{ }" を使用してブロックで囲む必要があるという問題が発生する可能性があります。

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

else は常に IF と組み合わせて使用​​する必要があるため、7 行目に問題があります。条件付きで実行されたステートメントにブラケットを使用しなかったため、コンパイラーはelseステートメントに問題を見つけました-

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