プログラミングのループを使用すると、条件に基づいて一連の命令を複数回実行できます。 Java には、以下に説明する 3 種類のループがあります。
1.forループ
for ループは、反復回数がわかっている場合 (タスクを何回繰り返す必要があるかがわかっている場合) に使用されます。 for ステートメントには、初期化条件とインクリメント/デクリメントが 1 行に含まれます。
例: 以下の Java プログラムは、0 から 10 までの数値を 1 行に出力する for ループを示しています。
Java
// Java program to demonstrates the working of for loop import java.io.*; class Geeks { public static void main(String[] args) { for (int i = 0; i <= 10; i++) { System.out.print(i + ' '); } } }
出力
0 1 2 3 4 5 6 7 8 9 10
構文:
for (初期化; 条件; 増分/減分) {
// 実行されるコード
}
以下の画像は、for ループのフローチャートを示しています。
for ループのフローチャート- 初期化条件 : ここで、使用中の変数を初期化します。 for ループの開始を示します。すでに宣言されている変数を使用することも、変数をループに対してのみローカルに宣言することもできます。
- 試験条件: ループの終了条件をテストするために使用されます。ブール値を返す必要があります。ループ ステートメントの実行前に条件がチェックされるため、これはエントリ制御ループでもあります。
- ステートメントの実行 : 条件が true と評価されると、ループ本体内のステートメントが実行されます。
- インクリメント/デクリメント : 次の反復で変数を更新するために使用されます。
- ループの終端 :条件が false になると、ループは終了し、そのライフ サイクルの終わりが示されます。
注記 : for ループには別の形式があります。 拡張された for ループ または (ループごとに)。
キーボードのf5って何ですか?
強化された for ループ (for each)
このループは、配列またはコレクションを反復処理するために使用されます。
例 : 以下の Java プログラムは、配列を反復処理して名前を出力する、拡張された for ループ (ループごと) を示しています。
Java// Java program to demonstrate // the working of for each loop import java.io.*; class Geeks { public static void main(String[] args) { String[] names = { 'Sweta' 'Gudly' 'Amiya' }; for (String name : names) { System.out.println('Name: ' + name); } } }
出力
Name: Sweta Name: Gudly Name: Amiya
構文:
for (dataType 変数 : arrayOrCollection) {
// 実行されるコード
}
2. while ループ
while ループは、ループ本体を実行する前に条件を確認したい場合に使用します。
例: 以下の Java プログラムは、0 から 10 までの数値を 1 行に出力する while ループを示しています。
Java// Java program to demonstrates // the working of while loop import java.io.*; class Geeks { public static void main(String[] args) { int i = 0; while (i <= 10) { System.out.print(i + ' '); i++; } } }
出力
0 1 2 3 4 5 6 7 8 9 10
構文:
while (条件) {
// 実行されるコード
}
以下の画像は、while ループのフローチャートを示しています。
Javaの文字列で
whileループのフローチャート- While ループはブール条件のチェックから始まります。 true と評価された場合はループ本体のステートメントが実行され、それ以外の場合はループに続く最初のステートメントが実行されます。このため、エントリ制御ループとも呼ばれます。
- 条件が true と評価されると、ループ本体内のステートメントが実行されます。通常、ステートメントには、次の反復で処理される変数の更新値が含まれます。
- 条件が false になるとループは終了し、ライフ サイクルの終了を示します。
3. do-while ループ
do-while ループにより、コード ブロックが確実に実行されます。 少なくとも一度は 状態を確認する前に。
例 : 以下の Java プログラムは、0 から 10 までの数値を 1 行に出力する do-while ループを示しています。
Java// Java program to demonstrates // the working of do-while loop import java.io.*; class Geeks { public static void main(String[] args) { int i = 0; do { System.out.print(i + ' '); i++; } while (i <= 10); } }
出力
0 1 2 3 4 5 6 7 8 9 10
構文:
する {
// 実行されるコード
while (条件);
以下の図は、do-while ループのフローチャートを示しています。
do-while ループのフローチャート- do while ループはステートメントの実行から始まります。初めての為、状態の確認は行っておりません。
- ステートメントの実行と変数値の更新後、条件が true または false 値であるかどうかがチェックされます。 true と評価されると、ループの次の反復が開始されます。
- 条件が false になるとループは終了し、ライフ サイクルの終了を示します。
- do-while ループは、条件がチェックされる前に少なくとも 1 回ステートメントを実行するため、終了制御ループの例であることに注意することが重要です。
よくあるループの間違いとその回避方法
ループが正しく使用されないと、コードのパフォーマンスの可読性や機能に影響を与える落とし穴やバグが発生する可能性があります。以下に、ループによくある落とし穴をいくつか示します。
1. 無限ループ
これは、あらゆる種類のループを実装するときに最もよくある間違いの 1 つであり、ループが無限に実行されるため、ループが終了しない可能性があることです。これは、何らかの理由で条件が失敗した場合に発生します。
無限ループの種類:
- 無限 for ループ
- 無限 while ループ
例: ここでは両方の例で無限ループを示しています。
Infinite For Loop// Java program to demonstrate // the infinite for loop import java.io.*; class Geeks { public static void main(String[] args) { for (int i = 0; i < 5; i--) { System.out.println( 'This loop will run forever'); } } }
Infinite While Loop // Java Program to demonstrate // the infinite while loop import java.io.*; class Geeks { public static void main(String[] args) { while(true) { System.out.println( 'Basic example of infinte loop'); } } }
出力: 上記のコードを両方実行すると、TLE (Time Limit Exceeded) エラーが発生します。
2. オフバイワンエラー
Off-by-One エラーは、ループの実行回数が希望より 1 回多いか 1 回少ない場合に発生します。これは基本的にループ条件が正しく設定されていない場合に発生します。
Javaでcsvファイルから読み取る
例 : 以下の Java プログラムは、ループが 6 回実行される Off-by-One エラーを示していますが、ループは 5 回実行されると予想されていました。
Java// Java Program to demonstrates Off-by-One Errors import java.io.*; class Geeks { public static void main(String[] args) { for (int i = 0; i <= 5; i++) { System.out.print(i + ' '); } } }
3. ループ内のループ変数の変更
ループ内でループ条件 (i など) を変更すると、ループが特定の反復をスキップしたり、予期しない動作をしたりする可能性があります。これにより、エラーや予期しない動作が発生する可能性があります。
例 : 以下の Java プログラムは、ループ内でループ変数を変更することを示しています。これにより、ループが特定の反復をスキップし、予期しない動作が発生します。
Java// Java program demonstrates // modification in i variable import java.io.*; class Geeks { public static void main(String[] args) { for (int i = 0; i < 5; i++) { if (i == 2) { // Modifies the loop variable and skips // the next iteration i++; } System.out.println(i); } } }
4. 空のループ本体
空のループ本体は、ループが反復するように記述されているが、ループ内で操作が実行されない場合に発生します。ループ内に有用な操作を何もせずにループを実行すると、混乱を招く可能性があります。
例: 以下の Java プログラムは、空のループ本体を示しています。
Java// Java program to demonstrates Empty loop body import java.io.*; class Geeks { public static void main(String[] args) { for (int i = 0; i < 10; i++) { // Empty body no operations } } }
ループの本体が空であるため、これに対して出力は生成されません。
概要表
ループタイプ | いつ使用するか | 状態チェック | 少なくとも 1 回は実行されますか? |
|---|---|---|---|
for ループ | 正確な反復が必要な場合 | ループ本体の前 エントリ制御と呼ばれます。 | いいえ |
while ループ | まずは状態確認が必要な場合。 | ループ本体の前 エントリ制御と呼ばれます。 | いいえ |
do-while ループ | 少なくとも 1 回は実行する必要がある場合 | ループ本体以降 Exit-controlledと呼ばれます。 | はい |
for-each ループ bashは文字列を連結します | コレクションアイテムをすべて処理すると | 内部処理 | いいえ |
関連投稿:
- for ループ
- while ループ
- do-while ループ