whileループ Javaプログラミング初心者の記録vol.20

スポンサーリンク
whileループのタイトル画像 Java攻略

プログラムに同じことを繰り返させる「ループ」について引き続き学習。

前回はforを使ったループについてだった。
参照:

今回は「while」を使ったループについて見ていく。

それでは行ってみよー。

スポンサーリンク

whileループの使い方

 

whileの構文はこんな感じ。

while(プログラムがループを行う条件){条件に合った場合に行う処理}

実際に使ってみる。

※パッケージとクラス、メインメソッドは省略

int A=10;

while(A>=0) {
System.out.println(“A=”+A);

これを実行したとしよう。
すると画面には…

A=10
A=10
A=10

と「A=10」が延々と繰り返される。

それもそのはず。

流れを見てみたら分かる。

  1. 「int A=10」と宣言しているから「A」には「10」が入っている
  2. while構文があり、()内の条件に合っていれば{}内の処理が行われたあと、whileの処理を繰り返す
  3. ()内は「A>=0」となっており、Aが0以上の値なら条件に当てはまる
  4. Aは「10」だから条件に当てはまる
  5. {}内の「System.out.println(“A=”+A);」が処理される
  6. 「A=10」と表示される
  7. whileの{}内の処理が一度終わったから先頭に戻って処理
  8. 「A」には「10」が入っている
  9. Aは「10」だから「A>=0」という条件に当てはまる
  10. {}内の「System.out.println(“A=”+A);」が処理される
  11. 「A=10」と表示される
  12. 最初に戻る…という繰り返し

これはAの数字を変えるプログラムが入力されていないから永遠に「A=10」が表示され続ける。
⇒一種のエラー

エラーが出ないようにするには…

int A=10;

while(A>=0) {
System.out.println(“A=”+A);
A–;

 

今回の場合はデクリメント演算子を使っている。
というのも、whileの()内の条件は「A>=0」とある。

 

int A=10から、Aは「10」と宣言されておりAが0より数字が大きいと画面に表示され続ける。

 

インクリメント演算子(A++)を使うと1ずつ増えていくから、「A=11」「A=12」「A=13」…と条件の「A>=0」から外れることはなくなってしまう。⇒表示される数字が膨大になる。

 

ということで、今回は1ずつ減らしていくデクリメント演算子を使っている。
⇒10から1ずつ減っていくから画面に表示されるのも11個(10,9,8,7,6,5,4,3,2,1,0)。

int A=10;

while(A>=0) {
System.out.println(“A=”+A);
A–;

このプログラムの流れは、「System.out.println(“A=”+A);」の表示まではこれまでと同じ。

画面に表示する処理が終わったら「A–(A=A-1)とあることから、10から1を引く

よって「9」が新しいAの値となって、whileループの処理が先頭から行われる。

ここの新しいAの値はwhileの()内のA(A>=0のA)に入るんだよ。

「A–;」はwhileの{}の中にあるということにも注目。

ここで得た新しいAの値がwhileの()内の条件に当てはまれば{}内の処理…って繰り返される。

ちょっと長いけど流れはつかめたかな。

この「9」はwhileの条件である「A>=0」という条件に当てはまることから、{}内の処理が実行される。

そしてまた先頭に戻る…というのを条件に当てはまらなくなるまで繰り返す

条件に当てはまらなかったらその時点でwhileループの処理は終了ということ。

今回でいうと、Aから1ずつ減っていってAが「-1」になった時点でwhileループが終了ということ。

Aが「-1」は条件に当てはまらないから{}内の処理は行われない。

理解できた!(多分)

ちなみに「A–;」を加えたプログラムを実行すると以下の結果が画面に表示されるはず。

A=10
A=9
A=8
A=7
A=6
A=5
A=4
A=3
A=2
A=1
A=0

条件はA>=0とAが0以上の時のみ条件に当てはまるから「-1」になった時点で条件から外れる。

すなわちwhileループの処理が終了ということ。

「A–」の部分を「A -=2」と変えたりして自分で色々試してみるともっと理解できるよ。

ちなみに「A-=2」の「-=」は代入演算子の一つ。
演算子-代入演算子 Vol.12 Javaプログラミング初心者の記録参照

 

A–の表現方法は複数

 

ここでは「A–」という表現を使ったけど、これまで見てきた演算子をつかって同じ表現ができるということにお気づきだろうか?

()で書いて説明してたんだけどもう一度おさらい。

A–デクリメント演算子
意味は「1」減らすということ。

これを別の書き方にすると…A=A-1
意味は「Aから1を引く」ということ。
これは値の再代入というもの。

 

もう一つは「-=」を使う方法。
これも代入演算子の一つ。
書き方は「A-=1」。
これはA=A-1と全く同じで、省略した形

ちなみに「A-=2」と書いたら「A=A-2」という意味。

書き方は色々あるから一つにとらわれないでOK。

書きやすいものを使えばいいけど、知っておくべきことというのは変わらない。

 

まとめ

 

これがwhile構文を使ったループ。

forを使ったループが理解できれば、こちらの方が理解しやすいかも?と個人的には思った。

forループにも共通しているのが、条件に漏れるまで永遠にループし続ける。

実際に自分でプログラムを入力して実行してみると、本を読んだり説明聞いたりするだけより理解できるからオススメ。

次は「do-while」というループについて見ていくつもり。

 

 

 

 

このエントリーをはてなブックマークに追加

コメント

タイトルとURLをコピーしました