Java の配列をループで操作する「for 文」と「拡張 for 文」
新人
「Java で配列の中の値を順番に処理するにはどうしたらいいですか?」
先輩
「配列の要素を順番に処理するには for 文や 拡張 for 文 を使うのが一般的だよ。」
新人
「for 文と拡張 for 文ってどう違うんですか?」
先輩
「それぞれの特徴や使い方を具体的な例を交えて説明していこう!」
1. 配列をループで操作するとは?(基本的な説明)
Java の配列には複数のデータを格納できますが、全てのデータを一度に処理する場合、ループを使うのが便利です。
例えば、配列のすべての値を順番に表示したい場合、手動で System.out.println() を書くのは大変ですが、ループを使えば簡単に処理できます。
2. for 文の基本的な書き方
Java の for 文は、配列の要素を順番に処理するのに適しています。基本的な構文は以下のようになります。
for 文の基本構文
public class ForLoopExample {
public static void main(String[] args) {
int[] numbers = {10, 20, 30, 40, 50};
for (int i = 0; i < numbers.length; i++) {
System.out.println("インデックス " + i + " の値: " + numbers[i]);
}
}
}
インデックス 0 の値: 10
インデックス 1 の値: 20
インデックス 2 の値: 30
インデックス 3 の値: 40
インデックス 4 の値: 50
このように、for 文を使えば、配列のすべての要素を順番に取得できます。
3. for 文を使って配列のすべての要素を表示する方法
Java の for 文を使うことで、配列のすべての要素を一つずつ取得し、表示することができます。
for 文を使った配列の要素表示
public class ForLoopExample {
public static void main(String[] args) {
String[] fruits = {"りんご", "みかん", "ぶどう", "バナナ"};
for (int i = 0; i < fruits.length; i++) {
System.out.println("果物 " + (i + 1) + " : " + fruits[i]);
}
}
}
果物 1 : りんご
果物 2 : みかん
果物 3 : ぶどう
果物 4 : バナナ
for 文では、ループの回数を 配列の長さ に設定することで、すべての要素を順番に表示できます。
4. 拡張 for 文の基本的な書き方
Java には 拡張 for 文(for-each) という構文があり、配列の要素を簡単に順番に処理できます。
拡張 for 文の基本構文
public class EnhancedForExample {
public static void main(String[] args) {
int[] numbers = {10, 20, 30, 40, 50};
for (int num : numbers) {
System.out.println("値: " + num);
}
}
}
値: 10
値: 20
値: 30
値: 40
値: 50
拡張 for 文を使うと、配列のすべての要素を 変数 に一つずつ代入しながらループ処理を行います。
5. for 文と拡張 for 文の違い
通常の for 文と拡張 for 文には、それぞれ異なる特徴があります。
for 文のメリットとデメリット
- インデックス(
i)を使って要素を取得できる。 - 配列の特定の位置を直接操作できる。
- しかし、
lengthを明示的に指定しなければならないため、コードが少し長くなる。
拡張 for 文のメリットとデメリット
- インデックスを意識せずに、配列のすべての要素を簡単に処理できる。
- ループの条件を書かなくて済むので、可読性が高い。
- しかし、配列の要素を変更する必要がある場合には向かない。
for 文と拡張 for 文の使い分け
要素を変更する場合やインデックスが必要な場合は for 文を、単純にすべての要素を処理する場合は 拡張 for 文 を使うと便利です。
6. for 文と拡張 for 文を使い分けるポイント
for 文と拡張 for 文は、どちらも配列の要素をループ処理するための方法ですが、それぞれ得意な使い方があります。
for 文を使うべき場面
- 配列のインデックス(位置)を使いたい場合
- 特定の要素だけを変更したい場合
- 配列の一部の要素だけを処理したい場合(例: 途中で処理を止める)
拡張 for 文を使うべき場面
- 配列の全要素を処理する場合
- インデックスを使わず、シンプルに記述したい場合
- 配列の要素を変更する必要がない場合
使い分けの例
public class ForLoopComparison {
public static void main(String[] args) {
String[] colors = {"赤", "青", "緑", "黄色"};
// for 文で特定の要素を変更
for (int i = 0; i < colors.length; i++) {
if (colors[i].equals("青")) {
colors[i] = "水色"; // 青を水色に変更
}
System.out.println(colors[i]);
}
// 拡張 for 文で全要素を表示
for (String color : colors) {
System.out.println("色: " + color);
}
}
}
赤
水色
緑
黄色
色: 赤
色: 水色
色: 緑
色: 黄色
上記のように、for 文は特定の要素を変更するのに適しており、拡張 for 文はシンプルな処理に向いています。
7. 配列の中から特定の値を検索する方法(for 文を活用)
for 文を使えば、配列の中から特定の値を探すことができます。例えば、ある文字列が配列に含まれているかどうかを調べることが可能です。
for 文を使った配列の検索
public class ArraySearch {
public static void main(String[] args) {
String[] fruits = {"りんご", "みかん", "ぶどう", "バナナ"};
String target = "ぶどう";
boolean found = false;
for (int i = 0; i < fruits.length; i++) {
if (fruits[i].equals(target)) {
found = true;
System.out.println(target + " が見つかりました(インデックス " + i + ")");
break;
}
}
if (!found) {
System.out.println(target + " は見つかりませんでした");
}
}
}
ぶどう が見つかりました(インデックス 2)
for 文を使って配列を検索し、見つかったら break を使って処理を中断することで、無駄なループを省略できます。
8. 練習問題:「for 文」と「拡張 for 文」を使った配列操作
ここまでの学習を活かして、以下の練習問題に挑戦してみましょう。
練習問題 1:for 文を使って配列の合計を求める
以下の配列の合計値を求めるプログラムを書いてみましょう。
public class ArraySum {
public static void main(String[] args) {
int[] numbers = {5, 10, 15, 20, 25};
int sum = 0;
for (int i = 0; i < numbers.length; i++) {
sum += numbers[i];
}
System.out.println("合計: " + sum);
}
}
合計: 75
練習問題 2:拡張 for 文を使って配列の最大値を求める
次に、拡張 for 文を使って配列の最大値を求めるプログラムを作成してみましょう。
public class ArrayMax {
public static void main(String[] args) {
int[] numbers = {18, 42, 3, 97, 56};
int max = numbers[0];
for (int num : numbers) {
if (num > max) {
max = num;
}
}
System.out.println("最大値: " + max);
}
}
最大値: 97
このように、拡張 for 文はインデックスを意識せずに値を順番に取得できるため、最大値を求めるような処理に適しています。