while文と繰り返し処理の変更 vol.17
今回は、while文というfor文と同じ繰り返し処理を行う構文についての紹介をしていこうと思う。
また、繰り返し処理を途中で変更する句について紹介したいと思う。
1.文の構成
int i = 0;
while (i < 3) {
System.out.println(i);
i++;
}
コンソール表示結果
0
1
2
解説
for文とやる事は一緒。
ただ、初期値を外で設定し
条件式のみカッコ内に、書く。
変更式は実行処理のブロック内に記述する。
今回は初期値が、0。
3より小さければ繰り返し処理が行われる。
変更式は実行処理ブロック内にインクリメント演算子が使われているため毎回+1される。
2がコンソールに表示されたあと+1され3になり条件式がfalseになるので終了。
使い方も様々あるので、前回のfor文でいくつかのパターンを記述したので参考にしてみて欲しい。
様々や書き方もあるので、是非色々試してみて欲しい。
条件式で、制御出来ていないと無限ループに陥る可能性もあるので、気をつけつつ試していただきたい。
私は、無限ループしたとき焦った。
2.処理を途中で変更する
処理を途中で変更する3つの構文
break
return
continue
この3つを紹介していこう。
3.break文について
先ほど利用した構文を用いて、紹介していこう。
int i = 0;
while(i < 3){
System.out.println(i);
if(i == 1){
break;
}
i++;
}
先ほどの構文に
if(i == 1){
break;
}
が追加された。
条件式が真の場合break句が実行されるので、そこでループ処理を中断してループから抜け出す。
今回の場合iが1になったら真となり、繰り返しのループから強制的に抜けることになる。コンソールに表示させるとどうなるか。
コンソール表示結果
0
1
if文の前でコンソールに表示させているので、1が表示されてループから抜け出している。
もしも、if文を先に書いていた場合は0のみの表示し、ループから抜け出している。
4.continue文について
int i = 0;
while(i < 3){
if(i == 1){
i++
continue;
}
System.out.println(i);
i++;
}
break文と変わったところは、breakがcontinueになり、System.out.println(i);がif文の後ろに来たという事だ。
if文の条件式が真の場合continue文が実行され、ループ内処理がスキップされ実行されない。
そして次の繰り返しに進む。
コンソール表示結果
0
2
今回の場合は、if文の条件式が、iが1だったらcontinue文が実行されるというものだった。
iが1になりループ内処理が実行されずに、次の繰り返しに移る。
また、この時にif文の実行処理にi++;をする理由は
もし、i++;を書かなかった場合コンソールには0のみが、表示されて処理が
中断されたと思われるが、
実際は、iがずっと1のまま、for文とcontinueを永遠繰り返してしまうという状態になってしまうので、if文の中で変更式i++;を記述した。
int i = 0;
while (i < 3) {
i++;
if (i == 1) {
continue;
}
System.out.println(i);
}
このようにも記述できるが、計算する位置が違うためコンソールに表示する結果が変わってくる。
コンソール表示結果
2
3
結果がこのように大きく変わってくるので、計算する位置も大切になってくる。
5.return文について
int i = 0;
while(i < 3){
System.out.println(i);
if(i == 1){
return;
}
i++;
}
コンソール表示結果
0
1
先ほど紹介した。break文と結果が同じになった。
何が違うのか?メインメソッド全体を見て説明していこう。
と思ったのだが、書いていくと4000字を超えてしまった。
長くなりすぎるのは、好きではないので次回説明する。
中途半端ではあるが、今回は以上。
復習を兼ねたこともやるので
また、次回
元体育会系文系エンジニア石黒