while文 つづき |
|
|
|
|
|
|
|
|
 |
 |
|
 |
 |
|
|
 |
 |
|
 |
 |
|
|
|
|
もおー!!!
なぽちゃーん、
ひどーい!!!
こうなるの
知ってたんでしょ!! |
|
|
 |
 |
|
 |
 |
|
 |
 |
|
|
 |
 |
|
 |
 |
|
|
|
|
|
|
|
|
|
 |
もう騙されないからー!
あんぽんたんー!
あんぽんたんー!
あんぽんたんー! |
|
そういう例
だってば。
まさか
こんなことに
なっちゃう
なんてーな。
ククク |
 |
|
|
|
|
|
|
|
|
|
 |
 |
|
 |
 |
|
|
 |
 |
|
 |
 |
|
 |
 |
|
悪い悪い。
条件式からフラグ消しちゃったからな。
ループを打ち切る処理が無いから
無限ループしちゃったんだよ。
もういくらフラグをfalseにしても
意味が無い。使ってないんだから。
勇者生命力が、int型の許容範囲を超えて
エラーになるまで回りっぱなしになるよ。 |
|
|
|
|
|
 |
 |
|
 |
 |
|
|
 |
 |
|
 |
 |
|
|
|
|
|
|
|
|
|
|
|
 |
|
 |
|
while文の例(KotoTest11のKNMain.java) |
|
|
条件式から、loopFlgを消してしまった。 |
|
|
・・・ |
|
|
|
041 |
|
//生命力最大値以上になっていたら処理を終了する |
|
042 |
|
if(yuushaLifePoint >= LIFE_POINT_MAX){ |
|
043 |
|
loopFlg =
false;//ループ継続フラグを消す |
|
044 |
|
} |
|
・・・ |
|
|
|
|
そのため、loopFlgを変更しても、条件式にはフラグとして反映されない。 |
|
|
|
 |
|
 |
|
|
|
|
|
|
|
|
|
|
|
|
 |
 |
|
 |
 |
|
|
 |
 |
|
 |
 |
|
|
|
|
なによ、この
「到達不能コード」って!
やっぱり分かってて
やったんじゃない!!! |
|
|
|
|
|
 |
 |
|
 |
 |
|
|
 |
 |
 |
 |
 |
|
|
|
|
 |
|
|
|
|
|
|
|
|
|
|
|
|
 |
 |
|
 |
 |
|
|
 |
 |
|
 |
 |
|
|
|
|
だって~
いろいろ分かったでしょ~
注意することとかさあ。 |
|
|
|
|
|
 |
 |
|
 |
 |
|
|
 |
 |
 |
 |
 |
|
|
|
|
 |
|
|
|
|
何で関係ないところ
コメントアウト
するのか
不思議に
思ってたんだ! |
 |
|
 |
IDEが
おりこうさんで
邪魔するんだもん。 |
|
|
|
 |
|
 |
|
終了メッセージをコメントアウトした理由 |
|
|
while文の例(KotoTest11のKNMain.java)48行目~ |
|
・・・ |
|
|
|
048 |
|
//終了メッセージ |
|
049 |
|
//System.out.println("回復しました"); |
|
・・・ |
|
|
|
|
今回の変更によって、while文が無限ループするため、
先に処理が進まなくなっています。
そのため、その先にある「終了メッセージ」の処理は、絶対に実行されません。
これを「到達不能コード」といいます。
コメント化しないと、IDEのチェックによりエラーと判断されてしまい、テスト実行に影響があるためコメント化しました。
(エラーのままでも強制的に実行させることは可能です。) |
|
 |
IDEのエラーチェック表示 |
|
|
|
|
 |
|
 |
|
|
|
|
|
|
|
|
|
|
 |
 |
|
 |
 |
|
|
 |
 |
|
 |
 |
|
|
|
|
じゃあさ、じゃあさ、
どうすればこのコード
ちゃんと動くようになる?
コードを直してみよう。 |
|
|
|
|
|
 |
 |
|
 |
 |
|
|
 |
 |
 |
 |
 |
|
|
|
|
 |
|
|
|
|
|
|
|
|
|
|
|
|
 |
 |
|
 |
 |
|
|
 |
 |
|
 |
 |
|
|
|
|
あっ、そうか!
これは条件式に
「直接trueを書く」
パターンだから・・・・ |
|
|
|
|
|
 |
 |
|
 |
 |
|
|
 |
 |
 |
 |
 |
|
|
|
|
 |
|
|
|
|
さて
さて
さて |
 |
|
 |
もう1つの
やり方だね! |
|
|
|
|
|
|
|
|
|
|
 |
 |
|
 |
 |
|
|
 |
 |
|
 |
 |
|
|
|
|
これでどうかな?
「2、条件式に直接trueを書く」
のやり方に変更して・・・
コードを、
フラグからbreakにしたの。
ちゃんと実行もできたよ。 |
|
|
 |
 |
|
 |
 |
|
 |
 |
|
|
 |
 |
|
 |
 |
|
|
|
|
|
|
|
|
|
 |
どう? |
|
ひゅー
ひゅー
三歩歩くと
忘れる頭
すてきー |
 |
|
|
|
|
 |
|
 |
|
while文の例(KotoTest11のKNMain.java)41行目~ |
|
・・・ |
|
|
|
041 |
|
//生命力最大値以上になっていたら処理を終了する |
|
042 |
|
if(yuushaLifePoint >= LIFE_POINT_MAX){ |
|
043 |
|
//loopFlg =
false;//ループ継続フラグを消す |
|
044 |
|
break;//ループを打ち切る |
|
045 |
|
} |
|
・・・ |
|
|
|
|
黄色の部分を書き写して実行して下さい。 |
|
|
 |
|
 |
|
 |
実行結果(出力ウィンドウ) |
|
|
|
|
|
|
|
|
|
|
|
 |
 |
|
 |
 |
|
|
 |
 |
|
 |
 |
|
|
|
|
while文は当面この
2つのパターンで
処理を作ってくれ。
条件で、不特定の回数
ループするやり方が
while文に合ってるんだよ。 |
|
|
|
|
|
 |
 |
|
 |
 |
|
|
 |
 |
 |
 |
 |
|
|
|
|
 |
|
|
|
|
|
|
|
|
|
|
|
|
 |
 |
|
 |
 |
|
|
 |
 |
|
 |
 |
|
|
|
|
そっか、
決まった数回、回すなら、
for文でできるもんね。
いろいろやるのは
ある程度できるように
なってからにするね。 |
|
|
|
|
|
 |
 |
|
 |
 |
|
|
 |
 |
 |
 |
 |
|
|
|
|
 |
|
|
|
|
while文は
これでおしまい。
ごまかすのも
おしまい。。。
ククク |
 |
|
 |
なにブツブツ
言ってるの? |
|
|
でも、
あんぽんたんって
美味しそうだね。
|
 |
|
 |
・・・
この
あんぽんたん。 |
|
|