
Javaのfor文の使い方―基本構文からネストや拡張for文まで
Javaの構文の一つに「for文」があります。
for文は繰り返しを扱う際に非常に便利です。
このページでは、for文の基本と応用を例文を交えて記載していきます。
目次
1.Javaのfor文の基本構文
Javaのfor文ではカウントのための変数を用意します。
変数は処理を行った後に毎回変化させ、条件を満たさなくなるまで繰り返します。
構文は下記の通りです。
for(変数の初期値;繰り返しの条件;変数の変化){
繰り返しの処理
}
下記のコードはiを0から5まで変化させながら、画面に表示しています。
① iに0を設定(i=0)
② iを表示(System.out.println(i))
③ iに1を加える(i++)
④ iが5より小さい場合は②に戻り、i=5になったらfor文を抜ける(i<5)
public class Main {
public static void main(String[] args) {
for(int i=0; i<5; i++) {
System.out.println(i);
}
}
}実行結果
0 1 2 3 4
1から5の合計を出す場合は以下のようになります。
合計を計算するための変数totalを用意します。
iの初期値を1にして、条件を「i<=5」にしています。
for文の中でtotalにiを足していきます。
合計の表示はfor文の外にしています
int total=0;
for(int i=1; i<=5; i++) {
total = total + i;
}
System.out.println("total:" + total);実行結果
total:15
2.for文の応用
2-1.for文の処理を途中で抜けるbreak文の使い方
break文を使用すると、for文の処理を途中で完了することができます。
以下はiが3になった時にfor文を完了します。
for(int i=1; i<=5; i++) {
if(i==3) {
break;
}
System.out.println(i);実行結果
1 2
2-2.for文の処理をスキップするcontinue文の使い方
continue文を使用すると、後の処理をスキップして次の繰り返しを行います。
break文ではfor文を完了しましたが、continue文ではfor文の処理は続きます。
以下はiが2の倍数の時は画面に表示しません。
continue文を使用すると、後の処理をスキップして次の繰り返しを行います。 break文ではfor文を完了しましたが、continue文ではfor文の処理は続きます。 以下はiが2の倍数の時は画面に表示しません
実行結果
1 3 5
2-3.for文を2重、3重にするネストの使い方
for文の中でさらにfor文を利用することができます。
以下は九九の結果(i*j)を表示します。
最初はi=1,j=1なので1*1=1、次はi=1,j=2なので1*2=2、、、と続きます。
jが9まで進むと、改行して次の段を計算します。
1桁の数字もスペースを入れた2桁で表示するために「%2d」を使用しています
for(int i=1; i<=9; i++) {
for(int j=1; j<=9; j++) {
System.out.printf("%2d ", i*j);
}
System.out.println();
}実行結果
1 2 3 4 5 6 7 8 9 2 4 6 8 10 12 14 16 18 3 6 9 12 15 18 21 24 27 4 8 12 16 20 24 28 32 36 5 10 15 20 25 30 35 40 45 6 12 18 24 30 36 42 48 54 7 14 21 28 35 42 49 56 63 8 16 24 32 40 48 56 64 72 9 18 27 36 45 54 63 72 81
2-4.for文の繰り返しを配列に対して行う拡張for文の使い方
これまでは変数を使用して、指定回数の繰り返しを行ってきました。
for文の繰り返しは、他にも配列に対して行うことができます。
配列の要素を変数に入れながら処理を繰り返します。
構文は下記の通りです。
for(配列の要素を入れる変数:配列){
繰り返しの処理
}
以下は配列fruitsの中身を変数fruitに入れて、fruitを表示しています。
配列fruitsの全ての要素を表示するとfor文が終了します
String[] fruits = {"りんご", "ばなな", "ぶどう"};
for (String fruit:fruits){
System.out.println(fruit);
}
実行結果
りんご ばなな ぶどう
配列を扱うListクラスでも同様の処理を行うことができます
Listfruits = new ArrayList<>(); fruits.add("りんご"); fruits.add("ばなな"); fruits.add("ぶどう"); for (String fruit:fruits){ System.out.println(fruit); }
実行結果
りんご ばなな ぶどう
2-5.(補足)forEachメソッドの説明と拡張for文との差異
この先は補足となりますが、「配列の各要素に対して処理を行う」ということはforEachメソッドとラムダ式でも記載ができます。
複雑な処理を行う場合は2-4の拡張for文の方が向いていますが、簡潔な処理の場合は記載が簡潔になります。
ラムダ式は下記のソースの「s->System.out.println(s)」の部分で、「(引数) -> { 処理 }」の形で引数に対して行う処理を記載します。
forEachメソッドと同時に用いることで、Listなどの各要素に対して処理を行うことができます
Listfruits = new ArrayList<>(); fruits.add("りんご"); fruits.add("ばなな"); fruits.add("ぶどう"); fruits.forEach(s->System.out.println(s));
実行結果
りんご ばなな ぶどう
3.さいごに
for文を用いることで回数の繰り返しや配列の各要素に対しての処理を行うことができます。
複雑な処理を行うことになっても、for文の基本は「回数の繰り返し」か「配列などの要素の繰り返し」になるので、今回の内容をしっかりと押させてもらえればと思います。




コメント