CodeGym /Java Blog /무작위의 /Java 중첩 루프
John Squirrels
레벨 41
San Francisco

Java 중첩 루프

무작위의 그룹에 게시되었습니다
대부분의 다른 프로그래밍 언어와 마찬가지로 Java는 중첩 루프를 지원합니다. 이것은 루프 내의 루프를 의미합니다. 이 기사에서는 Java에서 중첩 루프로 작업하는 방법에 대해 알아볼 것입니다.

자바 중첩 루프

루프가 다른 루프 안에 배치되면 루프를 중첩이라고 합니다. 첫 번째 패스에서 외부 루프는 완료될 때까지 실행되는 내부 루프를 호출한 후 제어가 외부 루프의 본문으로 전송됩니다. 두 번째 패스에서 외부 루프는 내부 ​​루프를 다시 호출합니다. 외부 루프가 끝날 때까지 계속됩니다. Java에는 네 가지 유형의 루프가 있습니다.
  • for 루프

  • while 루프

  • do...while 루프

  • 루프

모두 중첩 루프를 지원합니다. 중첩 루프 구조는 하나가 다른 하나에 따라 두 가지 조건이 충족되어야 할 때 사용됩니다. 예를 들어 2차원 행렬, 반 피라미드 또는 구구단을 표시해야 하는 경우입니다.

Java 중첩 루프 작동 방식

아마도 Java에서 가장 많이 사용되는 루프는 for 입니다 . for 는 상당히 다재다능하고 코드를 읽기가 매우 쉽기 때문입니다. 중첩된 for 루프 의 일반 구문은 다음과 같습니다 .

// outer loop
for (initialization; condition; increment) {
  //write here your code 

  //nested loop
  for(initialization; condition; increment) {
    //write here your code
  }
..
}
그는 어떻게 일합니까? 외부 루프가 시작됩니다. 그런 다음 중첩된 for 루프는 작업을 시작하고 조건이 충족될 때까지 인덱스를 통과한 다음 다시 작업을 외부 루프로 전달하며 이는 외부 루프의 조건이 충족될 때까지 발생합니다. 조금 까다롭지 않나요? 글쎄요, 구체적인 예를 들면 이해하기가 훨씬 쉬울 것이므로 다음으로 넘어 갑시다.

중첩 for 루프 코드 예제

여기에 하나의 고전적인 예가 있습니다. 두 개의 for 루프 를 사용하여 반 피라미드를 출력해 봅시다 . 그 중 하나가 중첩되어 있습니다.

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 루프의 본문이 식 확인 전에 한 번 실행된다는 것입니다.

중첩된 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 루프 예제

때로는 다른 유형의 루프를 서로 중첩할 수 있습니다. 예를 들어 for inside while 또는 for inside for-each 입니다. 그러나 이것이 최선의 프로그래밍 방법은 아닙니다. 이러한 구조는 코드의 가독성을 상당히 손상시킵니다. 따라서 전문 프로그래머는 서로 섞이지 않으려고 합니다. 글쎄요, 하지만 정말 필요한 경우에만 그렇습니다. 그리고 한 가지 작은 규칙이 더 있습니다. whilefor 중에서 선택하는 경우 가능하면 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++;

       }
   }
}
결과는 놀랍지 않습니다.
* ** *** **** ***** ****** ******* ******** ********* ***** *****
코멘트
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION