Java

for文とは?for文の書き方いろいろ 超初心者のJavaの勉強

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文の書き方や使い方があれば教えていただければと思います。

COMMENT

メールアドレスが公開されることはありません。 が付いている欄は必須項目です