forループとは
forループは、特定の回数だけ繰り返し処理を行うための構文です。
今回は、for ループの基本的な構造と九九の表などいくつかの出力を取り入れた説明と、無限ループの例、無限ループの制御方法、Eclipseで無限ループに入ったときの対処方法(トラブルシューティング)などを説明していきますので、マスターしておきましょう。
また、forループは、初期化、条件、変化式(更新)が1行にまとめられているため、読みやすく、管理しやすく、カウンタ変数を使った繰り返し処理に適しています。
for ループの構文
for (初期化; 条件式; 変化式) {
// 繰り返し処理
}
初期化: ループが開始する前に実行される処理。通常はカウンタ変数の初期化が行われます。
条件式: 各ループの繰り返しの前に評価される条件。条件が true の場合、ループが実行され、false の場合、ループが終了します。
変化式: 各ループの処理が終了した後に実行される処理。通常はカウンタ変数の更新が行われます。
基本的な例
1から10までの数を出力する
この例では以下のように、i が 1 から 10 までの値を取り、各値がコンソールに出力されます。
public class Main {
public static void main(String[] args) {
for (int i = 1; i <= 10; i++) {
System.out.println(i);
}
}
}
出力結果:
1
2
3
4
5
6
7
8
9
10
配列の要素を出力する
この例では、numbers 配列の各要素を出力しています。numbers.length は配列の要素数を返します。
public class Main {
public static void main(String[] args) {
int[] numbers = {10, 20, 30, 40, 50};
for (int i = 0; i < numbers.length; i++) {
System.out.println(numbers[i]);
}
}
}
出力結果:
10
20
30
40
50
60
九九の表を出力する
この例では、九九の掛け算の表を出力しています。内側の for ループが j を 1 から 9 まで繰り返し、外側の for ループが i を 1 から 9 まで繰り返します。
public class Main {
public static void main(String[] args) {
for (int i = 1; i <= 9; i++) {
for (int j = 1; j <= 9; j++) {
System.out.print(i * j + "\t"); // タブで区切り
}
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
よくあるエラーと注意点
1.無限ループ: 条件が常に true になると、ループが終了しなくなります。条件が正しいかどうかを確認しましょう。
2.初期化と更新の不一致: 初期化で設定した変数が、更新(変化式)で適切に変更されているか確認してください。
3.無限ループを作成する際は、意図的に行う場合を除いて、通常は避けるべきです。無限ループが発生すると、プログラムが応答しなくなり、リソースを無駄に消費する可能性があります。無限ループを意図的に使用する場合でも、適切な条件でループを終了するように設計することが重要です。
4.無限ループは、特定の条件でのみ終了するループや、サーバーのような長時間実行されるプログラムで使用されることがあります。
5.従量課金制のAWSなどを使っている場合、多大な請求が発生しますので、誤って無限ループを作成しないよう十分に注意しましょう!
無限ループの例
無限ループは、条件が常に真 (true) であるため、ループが永遠に続く状態です。無限ループは意図的に使われることもありますが、誤って作成するとプログラムが応答しなくなる可能性があるため注意が必要です。
条件を指定しない無限ループ
この例では、for ループの初期化、条件、更新がすべて省略されています。この構文は無限ループを生成します。
public class Main {
public static void main(String[] args) {
for (;;) {
System.out.println("This is an infinite loop.");
}
}
}
条件が常に真の無限ループ
この例では、i が常に0以上であるため、条件 i >= 0 が常に真となり、無限ループが生成されます。
public class Main {
public static void main(String[] args) {
for (int i = 0; i >= 0; i++) {
System.out.println("This is an infinite loop.");
}
}
}
意図的な無限ループ
この例では、for ループの条件が省略されているため、無限ループが生成されます。
public class Main {
public static void main(String[] args) {
for (int i = 0; ; i++) {
System.out.println("This is an infinite loop.");
}
}
}
無限ループの制御
無限ループは意図的に使われることもありますが、通常は特定の条件を満たしたときにループを終了させるために break 文を使用します。
この例では、i が10になったときに break 文が実行され、無限ループを終了します。
public class Main {
public static void main(String[] args) {
for (int i = 0; ; i++) {
System.out.println("This is an infinite loop.");
if (i == 10) {
break; // iが10になったらループを終了する
}
}
System.out.println("Loop exited.");
}
}
Eclipseで無限ループに入ったときの対処方法(トラブルシューティング)
1.Eclipseでプログラムが無限ループに入った場合、「コンソール」タブにある四角の赤いアイコンを押します。
2.Eclipseが応答しない場合: Eclipse自体が応答しない場合は、タスクマネージャー(Windows: Ctrl + Shift + Esc、Mac: Command + Option + Esc)を使用してEclipseを強制終了しましょう。
コメント