[解決済み] forループ内で'Else without previous if'エラーが発生するのはなぜですか?
2022-02-19 10:47:19
質問
私はC++の初心者で、しばらく自分の(おそらくひどい)コードを見つめていたのですが、どこがおかしいのかが分かりません。
私はif文とelse文の繰り返しの中でループしようとしていますが、何か文法的に正しくないことをしているのでしょう - コンパイラが「前のifがないelse」というエラーを表示するので
これは授業で使うもので、何とかしようと思っているのですが、もし私が見落としているような明らかなものを見つけたら、ぜひ教えてください。
ありがとうございました。
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;
解決方法は?
else
は何の条件も取らないのに、こう書いてある。
else (charlieAlive == 1 && bobAlive == 0); //else : (notice semicolon)
というのは、あなたの意図したとおりにならないのです。
トを行いたいのですね。
else if (charlieAlive == 1 && bobAlive == 0) //else if : (semicolon removed)
その違いに注目してください。
また、最大で1つの
else
ブロックに関連付けられ
if
ブロック または
if, 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++の入門書として良い本を選んでください。ここでは、すべてのレベルの方にお勧めの本をご紹介します。
関連
-
[解決済み] string does not name a type Errorが発生するのはなぜですか?
-
[解決済み] error: 'if' の前に unqualified-id を期待した。
-
[解決済み】 while(cin) と while(cin >> num) の違いは何ですか?)
-
[解決済み] 要素ごとの加算は、結合ループよりも分離ループの方がはるかに高速なのはなぜですか?
-
[解決済み] Collatz予想の検証を行うC++のコードは、なぜ手書きのアセンブリよりも高速に動作するのでしょうか?
-
[解決済み] マクロで無意味なdo-while文やif-else文を使っているのはなぜですか?
-
[解決済み] 構造体のsizeofは、なぜ各メンバーのsizeofの合計と等しくないのですか?
-
[解決済み] iostream::eof がループ条件の中 (つまり `while (!stream.eof())`) にあるのはなぜいけないとされているのでしょうか?
-
[解決済み] なぜpythonはforやwhileループの後に'else'を使うのですか?
-
[解決済み】JSPやJSTLでif...elseを使用する場合
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】getline()が何らかの入力の後に使用されると動作しない 【重複あり
-
[解決済み】非静的メンバ関数への参照を呼び出す必要がある
-
[解決済み】識別子 "string "は未定義?
-
[解決済み】C++でユーザー入力を待つ【重複あり
-
[解決済み] error: 'ostream' does not name a type.
-
[解決済み] 既に.objで定義されている-二重包含はない
-
[解決済み】Visual Studio 2013および2015でC++コンパイラーエラーC2280「削除された関数を参照しようとした」が発生する
-
[解決済み】なぜ、サイズ8の初期化されていない値を使用するのでしょうか?
-
[解決済み】Enterキーを押して続行する
-
[解決済み】VC++の致命的なエラーLNK1168:書き込みのためにfilename.exeを開くことができません。