第九章 制御文
while文(繰り返し)
条件が一致する間、処理を繰り返す命令です。
while( boolean ){
//処理;
}
ついに繰り返しの制御文が出てきた。
パソコンが演算能力をもっとも発揮するのは、
複雑な作業の繰り返しだ。
目次
1.書式
書式
while( 条件式 ){
//条件式が true のときの処理;
}
条件式の部分は、答えが boolean であればなんでも構いません。
関係演算子を用いた式が一般的でしょう。
条件式が true のときは、処理が実行されます。
条件式が false になると、whileブロックを抜けます。
if文と、とても良く似た構造ですね。
2.使い方
//Sample38_21.java
class Sample38_21{
public static void main(String[] args){
int x = 0;
while( x < 5 ){
System.out.println(x + " は5よりも小さいです。");
x++;//xの値を1増やしています。
}
System.out.println("おしまい。");
}
}
コマンドライン
>javac Sample38_21.java
>java Sample38_21
0 は5よりも小さいです。
1 は5よりも小さいです。
2 は5よりも小さいです。
3 は5よりも小さいです。
4 は5よりも小さいです。
おしまい。
Sample38_21.java の解説
- whileブロックの中に入ると、まず条件が一致しているか確かめます。
- 一致している場合は、whileブロックの中を実行します。
最初はx==0 なので、(x < 5)==true となり、
条件が一致していると判定されます。
- whileブロックの中を実行して終端まで来ると、whileブロックの先頭まで戻ります。
- 1と同様に、条件が一致しているか確かめます。
- 今度は x==1 になっています。
2と同様に (x < 5)==true となり、条件が一致していると判定されます。
.
.
.
この調子で、xを1ずつ増やしながら (手順1~3)を繰り返します。
- whileブロックの先頭まで戻ったときに x==5 になっていると、
(x < 5)==false となり、whileブロックを飛ばします。
- whileブロックの下から処理を続けます。
3.無限ループとコマンドラインの強制停止
Sample38_21のコードの7行目に、「x++;」という記述があります。
これは、x に (x+1) を代入して、xを1増やしています。
これを忘れると、xは、何度ループしても「0」のままになってしまうので、
いつまでたっても whileブロック を抜けられません。
無限ループといわれる状態です。
こんな時は慌てずに、[Ctrl]+[C]をタイプしてください。
コマンドラインの作業を停止して、待ち受け状態に戻ります。
(ターミナル でも コマンドプロンプト でも同じです。)
コマンドプロンプトが
返ってこなくなったら
コレっスよ。
4.百裂拳
以下のサンプルコードで、while文がいかに重要かをご理解いただけるでしょう。
//Sample38_22.java
class Sample38_22{
public static void main(String[] args){
int x=0;
System.out.println("\tお~!\n\tあ");
while(x<15){
x++;
System.out.println("\tた");
}
System.out.println("\tお~あたぁっ!");
}
}
コマンドライン
>javac Sample38_22.java
>java Sample38_22
お~!
あ
た
た
た
た
た
た
た
た
た
た
た
た
た
た
た
お~あたぁっ!
ホあたぁっ!
そーゆーキャラ
だったんスか。
5.do while
こんな書き方もあります。
書式 do while()
do{
処理; //条件式が true のとき
}while( 条件式 );
条件の評価が一番下にあるので、必ず1回は実行するwhile文です。
参考程度に紹介しました。
お前はもう死んでいる。
死んでない死んでない
あべし。