while文(わいるぶん) |
|
|
|
|
|
|
|
|
|
 |
 |
|
 |
 |
|
|
 |
 |
|
 |
 |
|
|
|
|
while文
条件を満たしている間、実行を繰り返し続ける制御文。
つまり、条件式がtrueの間は無限にループし続ける。
逆に止めたければ、条件式をfalseにしてやればいい。
実行回数が決まってないのがfor文との大きな違い。
日本語にすると「~の間」の意味。 |
|
|
|
|
|
 |
 |
|
 |
 |
|
|
 |
 |
|
 |
 |
|
|
|
|
|
|
|
|
|
|
|
 |
|
 |
|
 |
|
while文で使う命令
while |
実行する条件を指定する |
break |
処理を打ち切る |
continue |
命令以降の処理をキャンセルして
ループを続行する |
|
|
do-while |
実行する条件を指定する
ブロックが最低1回は実行される |
必要に応じて組み合わせて使う |
|
|
 |
|
 |
|
|
|
|
|
|
|
|
|
|
 |
 |
|
 |
 |
|
|
 |
 |
|
 |
 |
|
|
|
|
while文は、while単独でも使えるが
実際には、break、continueの、
2つの命令文を組み合わせて使うことが多い。
|
|
|
|
|
|
 |
 |
|
 |
 |
|
|
 |
 |
|
 |
 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
 |
 |
|
 |
 |
|
|
 |
 |
|
 |
 |
|
|
|
|
条件式がfalseでも1回は必ずブロックを実行する
do-while
という書き方もある。 |
|
|
|
|
|
 |
 |
|
 |
 |
|
|
 |
 |
|
 |
 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
 |
 |
|
 |
 |
|
|
 |
 |
|
 |
 |
|
|
|
|
while文の流れや決まりは、
条件式の部分以外はほとんどfor文と同じ。
違う部分を確認するようにして下さい。 |
|
|
|
|
|
 |
 |
|
 |
 |
|
|
 |
 |
|
 |
 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
 |
 |
|
 |
 |
|
|
 |
 |
|
 |
 |
|
|
|
|
whileはwhile文必須の命令。
ここにループし続けるための
条件式と実行する処理を書く。
whileは日本語の「~の間」の意味。 |
|
|
|
|
|
 |
 |
|
 |
 |
|
|
 |
 |
|
 |
 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
 |
 |
|
 |
 |
|
|
 |
 |
|
 |
 |
|
|
|
|
while文の書き方
whileに続けて()括弧、{}括弧を書く。
「( )」に条件式を書く。
「{ }」のブロックの中にtrueの時に実行する処理を書く。 |
|
|
|
|
|
 |
 |
|
 |
 |
|
|
 |
 |
|
 |
 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
 |
 |
|
 |
 |
|
|
 |
 |
|
 |
 |
|
|
|
|
while文の条件式の書き方はif文と同じ。
いろいろ比較もできるし、boolean型の変数や
論理演算子とかも使える。
条件式は、for文より自由に書ける。
だが、カウンターみたいに自動なのは無い。 |
|
|
|
|
|
 |
 |
|
 |
 |
|
|
 |
 |
|
 |
 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
 |
 |
|
 |
 |
|
|
 |
 |
|
 |
 |
|
|
|
|
ループをフラグで管理するやり方
この例の方法だと、条件式に使うのはフラグのみ。
今までのようにに、条件式に「以上なら」とか記入しない。
注意点
breakと違って即座にループが終了しない。
フラグを立てた後も、ブロックの終わりまで処理は実行される。
フラグを立てただけじゃ終わらないため、戻ってからまた判定してそれで終わる。 |
|
|
|
|
|
 |
 |
|
 |
 |
|
|
 |
 |
|
 |
 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
 |
 |
|
 |
 |
|
|
 |
 |
|
 |
 |
|
|
|
|
変数をブロックの中で宣言するとループ毎に初期化される。
これだと加算できない。してもループ毎0になる。
値を保持しつづける変数はブロックより上で宣言すること。
これはどの制御文でも同じ。 |
|
|
|
|
|
 |
 |
|
 |
 |
|
|
 |
 |
|
 |
 |
|
|
|
|
|
|
|
|
|
|
|
|
|
 |
|
 |
|
while文の例(KotoTest11のKNMain.java)24行目~ |
|
・・・ |
|
|
|
024 |
|
//*****
変数 ***** |
|
025 |
|
boolean
loopFlg = true;//ループ継続フラグ |
|
026 |
|
int yuushaLifePoint = 0;//勇者生命力 |
|
027 |
|
|
|
028 |
|
//***** 処理 ***** |
|
029 |
|
|
|
030 |
|
while(loopFlg ==
true){ |
|
031 |
|
//回復処理 |
|
032 |
|
yuushaLifePoint = yuushaLifePoint +
KAIFUKU_POINT; |
|
・・・ |
|
|
|
|
変数 yuushaLifePoint
はwhile文のブロックの外で宣言しているので、
ループしても変数は初期化されない。
ループを通して継続使用する変数はブロック外で宣言する必要がある。 |
|
|
|
 |
|
 |
|
|
|
 |
|
|
|
|
|
|
|
|
 |
 |
|
 |
 |
|
|
 |
 |
|
 |
 |
|
|
|
|
whileには
do-whileという書き方もある。
この書き方だと、
まずdoブロックを1回実行してから判定ループに入る。
つまり、条件式がfalseでも1回は必ずブロックを実行する。
doは日本語で「~する」って意味。 |
|
|
|
|
|
 |
 |
|
 |
 |
|
|
 |
 |
|
 |
 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
 |
 |
|
 |
 |
|
|
 |
 |
|
 |
 |
|
|
|
|
do-while文の書き方
doに続けて{}括弧でブロックを書く。
その後につなげてwhileと()括弧を書く。
「( )」に条件式を書く。
「{ }」のブロックの中に、trueの時に実行する処理を書く。
一番最後に「;」(セミコロン)が必要。 |
|
|
|
|
|
 |
 |
|
 |
 |
|
|
 |
 |
|
 |
 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
 |
 |
|
 |
 |
|
|
 |
 |
|
 |
 |
|
|
|
|
do-whileは、
最低1回は実行させたい処理がある場合に使える。 |
|
|
|
|
|
 |
 |
|
 |
 |
|
|
 |
 |
|
 |
 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
 |
 |
|
 |
 |
|
|
 |
 |
|
 |
 |
|
|
|
|
まずは基本として
この2つの書き方を覚えること。
それでほとんどの処理に対応できる。 |
|
|
|
|
|
 |
 |
|
 |
 |
|
|
 |
 |
|
 |
 |
|
|
|
|
|
|
|
|
|
|
|
 |
|
 |
|
while文の基本的な2つの書き方 |
|
1、条件式にフラグを使う |
2、条件式に直接trueを書く |
|
|
|
|
 |
|
 |
|
|
|
|
|
|
|
 |
|
 |
|
while文のまとめ(処理) |
|
while文の処理の内容 |
条件式がtrueの間処理を繰り返す制御文(反復) |
break文を使う事でループを打ち切ることができる |
continue文を使う事で中断して特定ループをスキップできる |
実行回数が不明な処理に対応できる。 |
|
|
|
|
 |
|
 |
|
|
 |
|
 |
|
while文のまとめ(命令) |
|
while |
「~の間」処理を実行する命令 |
ループする条件を条件式で決める |
ループの継続を判定する |
while文必須の命令 |
|
break |
ループを「打ち切る」命令 |
whileブロックの中に書く |
自分のいるwhileブロックのループを終了する |
|
continue |
ループをその場で中断して「続ける」命令 |
whileブロックの中に書く |
自分のいるwhileブロックのループを中断して戻る |
|
|
do-while |
処理を実行してからループを開始する命令 |
ループの最後にループの継続を判定する |
最低1回は処理が実行される |
doブロックに実行する処理を書く |
|
|
|
|
|
 |
|
 |
|
|