>Java >java지도 시간 >Java의 중첩 루프

Java의 중첩 루프

WBOY
WBOY원래의
2024-08-30 15:25:34526검색

내부에 또 다른 루프가 중첩된 구조로 이루어진 루프가 만들어지고, 외부 루프는 내부 ​​루프의 실행 횟수를 모니터링하는데, 이러한 구조에서 작동하는 루프를 중첩 루프라고 합니다. 루프 안의 루프라고도 합니다.

광고 이 카테고리에서 인기 있는 강좌 JAVA MASTERY - 전문 분야 | 78 코스 시리즈 | 15가지 모의고사

Java의 중첩 루프 구문

다음은 다양한 구문입니다.

1. 중첩된 For 루프

for(initialize;cond1;increment/decrement)
{
for(initialize;cond2;increment/decrement)
{
//body of loop2
}
//body of loop1
}

2. 중첩 While 루프

while(cond1)
{
while(cond2)
{
// body of loop2
}
//body of loop1
}

3. 중첩된 Do-while 루프

do{
do{
//body of loop 2
}while(cond2)
//body of loop 1
}while(cond1

4. 중첩된 이종 루프

루프 중첩에는 유사한 유형의 루프만 중첩될 수 있다는 제한이 없습니다. for 루프 내부의 while 또는 do-while 루프 내부의 while 루프와 같이 다른 루프 내부에 루프를 중첩할 수 있으며 다른 모든 가능한 조합이 모두 적용 가능합니다.

for(initialize;cond1;increment/decrement)
{
while(cond2){
//body of loop2
}
// body of loop1
}

흐름도

Java의 중첩 루프

설명:

위 순서도에서 먼저 프로그램 본문에 들어가면 초기화문이나 인쇄문 같은 문이 실행됩니다. 루프가 발견되면 프로그램은 외부 루프의 조건을 확인합니다. true를 반환하면 루프에 들어갑니다. 그렇지 않으면 루프가 종료되고 루프 이후 프로그램의 나머지 명령문이 실행됩니다.

외부 루프에 들어가서 내부 루프를 만나면 변수가 있으면 초기화되고, true를 반환하면 내부 루프에 대한 조건을 확인하여 프로그램이 내부 루프로 들어갑니다. 그렇지 않으면 Loop1의 끝으로 돌아가서 다시 Loop1을 실행하기 위해 증가/감소를 수행합니다.

cond2가 true를 반환하는 경우 Loop2 문이 실행되고 카운터 변수가 증가/감소합니다. 이 절차를 여러 번 반복한 후 프로그램은 Loop2, Loop1을 차례로 종료하고 루프 다음의 명령문으로 이동합니다.

Java에서 중첩 루프는 어떻게 작동하나요?

모든 루프는 내부에 아래 3가지 항목으로 구성됩니다.

  1. 초기화: 이 단계는 카운터 값을 초기화하는 것을 의미합니다.
  2. 조건: 이 조건은 루프 실행을 계속하기 위해 참이어야 하는 비교를 나타냅니다.
  3. 카운터 증가/감소: 루프의 한 흐름이 끝나면 카운터에서 수행되는 작업을 의미합니다.

중첩 루프의 경우 내부 루프마다 위의 세 단계를 확인합니다. 따라서 외부 루프의 각 흐름에서 내부 루프가 완전히 실행됩니다. 즉, 외부 루프에 m개의 흐름이 있고 외부 루프에 n개의 흐름이 있는 경우 이 루프는 함께 m*n번 실행됩니다.

참고: 중첩할 수 있는 루프 수와 루프 유형에는 제한이 없습니다. 모든 유형의 루프를 사용할 수 있지만 결과에 영향을 미치므로 주의해야 합니다. 프로그램의 시간복잡도는 성능에 영향을 미칩니다.

예:

for(int i=0;i<5;i++){
for(int j=0;j<5;j++){
System.out.println(“LOOP DEMO”);
}
}

위의 중첩 루프의 경우:

외부 루프

Counter variable = i
Condition – i<5
Increment/decrement – i++

내부 루프

Counter variable = j
Condition – j<5
Increment/decrement – j++

Java의 중첩 루프 예

아래는 Java의 중첩 루프 예입니다.

예시 #1

아래 패턴을 인쇄하는 프로그램을 작성해 보겠습니다.

*

**

***

****

*****

코드:
package Try;
class Demo
{
//static method
public static void main(String[] args)
{
for(int i=0;i<5;i++){
for(int j=0;j<5;j++){
if(i>=j) {
System.<em>out</em>.print('*');}
}
System.<em>out</em>.println("\n");
}
}
}
출력: Java의 중첩 루프 설명:

위 프로그램에서는 인쇄해야 하는 패턴을 '*' 요소가 5행 5열인 2차원 배열과 유사하게 취할 수 있으므로 2개의 내부 루프가 사용됩니다.

또한 if(i<=j) 조건은 행 카운터가 I이고 열 카운터가 j인 2차원 배열에 있는 * 위치를 사용하여 알아낼 수 있습니다.

I=1 I=2 I=3 I=4 I=5
J=1 *
J=2 * *
J=3 * * *
J=4 * * * *
J=5 * * * * *

We can easily configure that we need to print * only when i

Example #2

Let’s see the example to print a 2D matrix.

Code:

package Try;
class Demo
{
public static void printMatrix(int arr[][][]){
int i=0,j=0;
while(i<arr.length){
while(j<arr[i].length){
for (int k = 0; k <arr[j].length; k++)
System.out.println("arr[" + i + "][" + j + "]["+ k + "] = "+arr[i][j][k] );
j++;
}
i++;
j=0;
}
}
public static void main(String[] args)
{
int arr[][][] ={ { { 10, 2 }, { 30, 4 } }, { { 51, 6 }, { 79, 8 } } };
printMatrix(arr);
}
}

Output:

Java의 중첩 루프

Explanation:
In the above program, we have used 3 loops to print the elements stored in a 3D Matrix using 3 counter variables. Thus, any number of loops can be tested as well as any type of loop can be used.

Conclusion

Nested loop refers to the placement of loop inside the loop to execute the operations that need multiple loop traversals such as printing star patterns or search operations on any collection data structure array or linked list. Although it helps to make our task easier, it also increases the complexity of the program thus must be used in an efficient manner.

위 내용은 Java의 중첩 루프의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
이전 기사:Java의 For-Each 루프다음 기사:Java의 For-Each 루프