1

私は C++ を初めて使用し、自分の (おそらく最悪の) コードをしばらく見つめていましたが、何が問題なのかわかりません。

if ステートメントと else ステートメントのいくつかの反復をループしようとしていますが、文法的に正しくないことをしているに違いありません - 「else without a previous if」のコンパイラ エラーが表示されるためです。

これはクラスのためのものであり、私はそれを解決しようとしていますが、私が見落としている明らかな何かを見つけたら、ぜひ知りたいです.

ありがとうございました!

for (i = 0; i < iterationsNum; i++){
if (charlieAlive == 0) // Aarron's shot
        {
        if (aaronShot() == 1)
        charlieAlive = 1;
        }       
else (charlieAlive == 1 && bobAlive == 0);{         
        if (aaronShot() == 1)
        bobAlive = 1;
        }
else (charlieAlive == 1 && bobAlive == 1 && aaronAlive == 0);{
        cout << "Aaron is the Winner!\n";
        totalShot++;
        aaronCounter++;
        }
continue;



if (charlieAlive == 0 && aaronAlive ==0) // Bob's shot
        {
        if (bobShot() == 1) 
        charlieAlive = 1;
        }
else (charlieAlive == 1 && aaronAlive == 0);{
        if (bobShot() == 1)
        aaronAlive = 1;
        }
else (charlieAlive == 1 && aaronAlive == 1 && bobAlive == 0);{
        cout << "Bob is the Winner!\n";
        bobCounter++;
        totalShot++;
        }
continue;


if (charlieAlive == 0 && bobAlive == 0) // Charlie's shot   
        {
        bobAlive = 1;
        }
else (charlieAlive == 0 && bobAlive == 1 && aaronAlive == 0);{          
        aaronAlive = 1;
        totalShot++;
        }
else (charlieAlive == 0 && bobAlive == 1 && aaronAlive == 1);{
        cout << "Charlie is the Winner!\n";
        }
continue;
4

3 に答える 3

6

elseどんな条件も取りませんが、あなたはこれを書きました:

else (charlieAlive == 1 && bobAlive == 0);  //else : (notice semicolon)

それはあなたが意図したことをしません。

あなたがしたいこと:

else if (charlieAlive == 1 && bobAlive == 0)  //else if : (semicolon removed)

違いに注意してください。

また、ブロックまたはブロックのチェーンにelse関連付けられたブロックは、最大で 1 つ存在できます。つまり、次のように記述できます。ifif, else-if, else-if

if (condition) {}
else {}

または、

if (condition0) {}
else if (condition1) {}
else if (condition2) {}
else if (condition3) {}
else if (condition4) {}
else {}

いずれにせよ、elseブロックは常に最後のブロックです。その後、別のelseブロックを書き込むとエラーになります。

それとは別に、間違った場所にセミコロンもあります。次のことも修正しました。

else (charlieAlive == 1 && bobAlive == 0); <---- remove this semicolon!

それが役立つことを願っています。


優れた C++ 入門書を選びます。ここでは、すべてのレベル向けのいくつかの推奨事項を示します。

于 2013-02-21T05:55:01.420 に答える
3

ここにはいくつかの問題があります。

  1. else ステートメントにセミコロンがあります - これらは存在しないはずです
  2. 1 つの if に対して複数の else 句があります。別の条件を評価する場合は「else if」を使用します。else は、条件が満たされない場合のキャッチオールです。
  3. 適切なインデントと一貫したブレースの使用を強くお勧めします。これを行わなくても必ずしもエラーになるわけではありませんが、エラーに気づきやすくなります。
于 2013-02-21T05:57:53.407 に答える
1

elseステートメントに条件ステートメントを入れることはできません

他のすべてのステートメントに対して正しい

のようにelse (charlieAlive == 1 && bobAlive == 0);

elseは単に代替フローですif-つまり

if(condition)  // if this fails go to else part
  {
--- // if condition true execute this
}
else{
 --- // will run when condition in if fails
}

そのため、else ステートメントに条件を付ける必要はありません。


as take condition を編集else ifして、これをやりたかったようです
else if(your condition statements) // 注: 最後にセミコロンはありません

于 2013-02-21T05:54:43.540 に答える