Java は、他のほとんどのプログラミング言語と同様に、ネストされたループをサポートします。これは、ループ内のループを意味します。この記事では、Java で入れ子になったループを操作する方法について説明します。
Java のネストされたループ
ループが別のループ内に配置される場合、そのループはネストされていると呼ばれます。最初のパスでは、外側のループが内側のループを呼び出し、最後まで実行され、その後、制御が外側のループの本体に転送されます。2 回目のパスでは、外側のループが内側のループを再度呼び出します。外側のループが終了するまで同様に続きます。Java には 4 種類のループがあります。-
forループ
-
whileループ
-
do...whileループ
-
for-eachループ
Java のネストされたループの仕組み
おそらく Java で最もよく使用されるループはforです。これは主に、このループが非常に多用途であり、コードが非常に読みやすいためです。ネストされたforループの一般的な構文は次のとおりです。
// outer loop
for (initialization; condition; increment) {
//write here your code
//nested loop
for(initialization; condition; increment) {
//write here your code
}
..
}
彼はどのように働いていますか? 外側のループが開始されます。次に、ネストされたforループが作業を開始し、条件が満たされるまでそのインデックスを通過し、再び作業を外側のループに渡します。これは、外側のループの条件が満たされるまで行われます。少し難しいように思えますね。そうですね、具体的な例を使うとより理解しやすくなりますので、次に進みましょう。
ネストされた for ループのコード例
ここに典型的な例を 1 つ挙げます。2 つのforループを使用してハーフピラミッドを出力してみましょう。そのうちの 1 つはネストされています。
public class NestedLoopsDemo1 {
public static void main(String[] args) {
for (int i = 0; i < 10; i++) {
for (int j = 0; j<=i; j++)
System.out.print("*");
System.out.println();
}
}
}
出力は次のとおりです。
* ** *** **** ***** ****** ******* ******** ********* ***** *****
ネストされた while ループのコード例
public class NestedLoopsDemo2 {
public static void main(String[] args) {
int i = 0;
while (i < 10) {
int j = 0;
while (j <= i) {
System.out.print("*");
j++;
}
System.out.println();
i++;
}
}
}
出力は前の例とまったく同じです。
* ** *** **** ***** ****** ******* ******** ********* ***** *****
do ...whileループはwhileループに似ています。主な違いは、 do...whileループの本体が式のチェックの前に 1 回実行されることです。
ネストされた foreach ループのコード例
for-eachループは、通常のforループと同様にネストできます。これは、2 次元配列を反復する ネストされたfor-eachループの例です。
public class NestedLoops2 {
public static void main(String[] args)
{
int[][] mainArray = { {5, 4, 3, 2, 1}, {7, 8, 9, 10, 11} };
for (int[] myArray : mainArray)
{
for (int i : myArray)
{
System.out.print(i+" ");
}
System.out.println("");
}
}
}
出力は次のとおりです。
5 4 3 2 1 7 8 9 10 11
for ループと while ループの混合例
場合によっては、異なるタイプのループを相互にネストすることができます。たとえば、while内やfor -each内などです。ただし、これはプログラミングの最善の方法ではありません。このような構造は、コードの可読性を著しく損ないます。したがって、プロのプログラマーは、一方を他方と混同しないように努めます。まあ、そうしますが、それは本当に必要な場合に限ります。そしてもう 1 つの小さなルール: whileとforのどちらかを選択する場合は、可能な限りfor を使用してください。ただし、ここではwhile内でforループを使用する例を示します。もう一度半ピラミッドを構築しましょう。
public class NestedLoopsDemo2 {
public static void main(String[] args) {
int i = 0;
while (i < 10) {
for (int j = 0; j <= i; j++) {
System.out.print("*");
}
System.out.println();
i++;
}
}
}
出力は驚くべきものではありません:
* ** *** **** ***** ****** ******* ******** ********* ***** *****
GO TO FULL VERSION