- 締切済み
二度実行するのを防止したい。
クイズゲームの判定で、複数入力された回答の一つでも正解があれば正解とするようにしたのですが、正解の処理を一度しても処理が終わらずに二度点数が入ってしまうので一度でも正解になったらそこで処理を止めたいのですがexitを入れた所今度はうまく動かなくなりました。 この方法は間違えないのでしょうか? https://codepen.io/anon/pen/bKoObo
- みんなの回答 (3)
- 専門家の回答
みんなの回答
- amanojaku1
- ベストアンサー率54% (265/488)
>回答No.2 amanojaku1 >breakを使わなくてもwhileの条件で普通にループ・ブロックから脱出できます。 breakを使わなくてもwhileの条件が偽の時に普通にループ・ブロックから脱出できます。
- amanojaku1
- ベストアンサー率54% (265/488)
>ありがとうございました。whileの場合は関数のreturnと全く同じくこれ以降の処理を一切終了したい倍はbreakでよかったのですね。 breakで『「while、for、do~while」ループの1つのブロックからの脱出、「switch」ブロックからの脱出』をします。 ループがネストしている場合 for(~){ while(~){ ここで「break」を使うと1つのループ・ブロックから脱出します。 つまりwhileループから脱出します。 } } ラベルを使うとネストしたループ・ブロックから脱出できます(「hogehoge」がラベル)。 hogehoge:for(~){ while(~){ ここで「break hogehoge」を使うと「hogehoge」ブロックから脱出します。 つまりforループから脱出します。 } } 下記のサンプルも参考にして下さい。 ラベル付きbreak文 https://www.javadrive.jp/start/break/index3.html >これはwhile内の処理の最後に必ず入れないといけないと思っていたのですが、 breakを使わなくてもwhileの条件で普通にループ・ブロックから脱出できます。 特別な条件でループ・ブロックから脱出したい場合や、ループの途中でループ・ブロックから脱出したい場合などでbreakを使って下さい。 >もしかして途中に入れてもそこで終了させてるのですか >ただその場合それ以降の処理を書く理由がなくなるのでそのような使い方はしないですかね プログラムの状況によって様々なパターンがあります。
- amanojaku1
- ベストアンサー率54% (265/488)
そのプログラムの全体像(htmlファイルなどの要素とか)が掴めないので、とりあえずの回答です。 「exit」を変更して下さい。 たんに「while」ループを抜けたいだけなら「break」 それが関数の場合で、関数を終了したい場合は「return」
お礼
ありがとうございました。whileの場合は関数のreturnと全く同じくこれ以降の処理を一切終了したい倍はbreakでよかったのですね。 これはwhile内の処理の最後に必ず入れないといけないと思っていたのですが、もしかして途中に入れてもそこで終了させてるのですか ただその場合それ以降の処理を書く理由がなくなるのでそのような使い方はしないですかね