for文は実行を繰り返す(ループ)を記述するための文です。
for文の書式
書式は下記のようになります。
for (初期化式; 条件式; 変化式{
実行する文1 ;
}
実際に値を入れてみると下記のようになります。
for (int i =0 ; i < 5; i++){
System.out.print(i);
}
初期化式 ( initialization )
初期化式では変数の初期化を行えます。初期化式はカンマ区切りで複数書くことも可能です。
例: for(int i = 0, j = 1; i < 5 ; i++)
初期化式を複数書く場合は同じ型である必要があります。
条件式 ( condition )
条件式では繰り返す条件を書きます。
条件が true である限り 実行する処理を繰り返します。
条件式は一つのみだが、以下のように倫理演算子を使って条件を複数書くことができる。
例 : for(int i = 0, j = 1; i < 3 && j < 4; i++)
変化式 ( increment / decrement )
継続式、再初期化式などいろいろ言われ方があるようです。
変化式では実行処理を終え、最後に行われる処理です。
変化式の処理が行われたあとは条件式に戻ります。
変化式はカンマ区切りで複数書くことができます。
例:for(int i = 0, j = 1; i < 5 ; i++, sum())
関数を変化式に使用することも可能です。
フローチャート 例
他にも書き方はあるようですが参考程度に。
for文 書き方・使われ方いろいろ
定番
個人的に一番よく見るfor文です。
for(int i = 0 ; i < 5 ; i++){
System.out.print( i + ” “);
}
■ 結果:0 1 2 3 4
複数式を定義
初期化式、変化式は1つだけとは限りません。
読みづらくなるのであまり推奨されていないようです。
for(int i=0, j=5; i<j; i++, j–){
System.out.println( i + ” : “+ j );
}
■ 結果
0 : 5
1 : 4
2 : 3
拡張for文
for文の書き方が少し変わってやっかいですが慣れれば通常for文より簡単にかけるのでいいです。Java5.0から使えるようになりました。
しかし、すべての要素を取り出して表示する・集計するなど限られたケースでしか利用できません。
こちらもよく見かけます。
int [] a = { 0, 1, 2, 3};
for(int b : a) {
System.out.print(b + ” “);
}
結果: 0 1 2 3
書式は for(取り出す変数と型 : 取り出される変数) となります。
セミコロンではなく「 : 」コロンを使います。
上記の場合 a[ 0 ]から順に、変数bに代入されています。
多重ループ
複雑になって嫌いだけどよく使われているfor文です。
//2重配列の変数arrを宣言
int[][] arr = new int[2][3];
//2重配列への値をループ文で代入
for(int i = 0; i < arr.length ; i++) {
for(int k = 0; k < arr[i].length ; k++){
arr[i][k] = k;
}
}
//2重配列の値を拡張for文を利用して表示
for(int [] t : arr) {
for(int tt : t) {
System.out.print(tt + ” “);
}
System.out.println();
}
■ 結果
0 1 2
0 1 2
前半のfor文では2重配列への数値を2重ループで代入しています。
後半の拡張for文で2重配列の値を取得しています。
条件の欠如
「 初期化式、条件式、 継続式 」は、省略可能です。
for(int i = 0 ; i++ < 5 ; ){
System.out.print( i + ” “);
}
結果:1 2 3 4 5
※セミコロンは省略できません
極論、全部省略しても動作します。
int i = 0;
for( ; ; ){
if( i < 5){
i++;
System.out.print( i + ” ” );
}
}
結果:1 2 3 4 5
無限ループ
for文で条件式によっては無限ループに突入してしまいます。
例えば何も書かなければ無限ループします。
for( ; ; ){
System.out.print( ” 無限ループ” );
}
無限ループ時はフリーズしてしまったりすることがあります。Eclipseでは処理を停止するボタンを押したりして止めましょう。
余談
int型でばかりでループさせましたが、当たり前ですがint型以外を使ってもfor文は動きます。
例:charでfor文
char []alphabet = new char[26];
char c = ‘a’;
for (int i = 0; i < 26; i++){
alphabet[i] = c++;
System.out.print(alphabet[i] + ” “);
}
結果:a b c d e f g h i j k l m n o p q r s t u v w x y z
booleanとbyteでfor文
boolean k = true;
for(byte i = 0; k; i++){
System.out.print(i + ” “);
if(i == 5){
k = false;
}
}
for文の式の中ではshortやbyte、floatやdouble、boolean型なんでも使うことができます。あまりみかけないですが。
for文 クイズ
簡単なクイズです。配列 int[] a = {45, 55, 103, 28, 99, 21 }の合計をfor文を使って書き出してみてください。
答え
書き方いろいろですが、答えです。
int[] a = {45, 55, 103, 28, 99, 21 };
int total = 0;
for(int i = 0; i < a.length ; i++){
total = total + a[i];
}
System.out.println(“合計は”+total +”です”);
結果: 合計は351です
さいごに
for文いろいろまとめてみました。
思ってたよりいろいろあっていろいろできました。
他にもよく使うfor文の書き方や使い方があれば教えていただければと思います。