Java

Java) break문 & continue문 사용법

pogun 2024. 12. 28. 00:11

break & continue

break : 루프 탈출

: 단독으로 사용하지 못한다.

: 루프문과 함께 사용해야 한다.

: for, while, do-while문

 

continue : 생략(skip)

: 단독으로 사용하지 못하고 반드시 루프문과 함께 사용해야 한다.

: loop문 안에 처리를 생략

 

형식

        for(int i = 0; i < 10; i++){
                처리1
                처리2
                if(i == 6){
                    continue;
                }
                처리3
            } // i가 6일 때 처리3은 생략


break문 사용법

for(int i = 0; i < 50; i++){
    System.out.println("i = " + i);
    if(i == 33){
        System.out.println("탈출");
        break;
    }
}

char array[] = {'A', 'B', 'C', 'D', 'F'};
for(int i = 0; i < array.length; i++){
    System.out.println(array[i]);
    if(array[i] == 'D'){
        break;
    }
}

: i가 33번째일 때 루프문 종료

: 문자열에 D일 때 루프문 종료

- 값이 나오며 출력하지 않고 탈출

int arrNumber[] = {3, 6, 8, -2, 9, 1};

for(int i = 0; i < arrNumber.length; i++){
    if(arrNumber[i] < 0){
        break;
    }
    System.out.println("arrNumber[" + i +"] = " + arrNumber[i]);
}

: 0보다 작으면 탈출하라는 조건문 추가

forEach문에서도 사용 가능

for(int num:arrNumber){
    if(num < 0){
        break;
    }
    System.out.println("num = " + num);
}

: 동일하게 -가 나오면 탈출

2중 for문 탈출

for(int i = 0; i < 5; i++){             // -> 3
    System.out.println("i = " + i);
    for(int j = 0; j < 3; j++){         // -> 1
        System.out.println("\tj = " + j);
        if(i == 3 && j == 1){
            break;
        } // break는 하나의 loop만 탈출시킴
    }
}

: 이렇게 작성하면 첫번째 for문은 탈출을 하지 않는다.

: i = 4를 출력하고, j도 모두 출력해버림.

: 즉, break는 하나의 loop만 탈출시킨다.

 

그럼 어떻게 모두 탈출시키냐?

첫 번째 방법(같은 조건을 두번 작성)

boolean b = false; // false로 선언해야함

for(int i = 0; i < 5; i++){        // -> 3
    System.out.println("i = " + i);
    for(int j = 0; j < 3; j++){    // -> 1
        System.out.println("\tj = " + j);
        if(i == 3 && j == 1){
            b = true;
        }
        if(b == true){
            break;
        }   
    }
    if(b == true){
        break;
    }
}

: if 조건에 왔을 때 b가 true로 바뀐다.

: 그리고 다시 if문으로 b가 true일 때 탈출하도록 break를 건다.(안쪽 loop문 종료)

: 마지막으로 안쪽 if가 true일 때 바깥쪽 for문도 탈출이 되어야하니 바깥쪽 if문도 true조건 걸고 break를 건다.

두 번째 방법(break 구문에 탈출 loop를 지정)

out:for(int i = 0; i < 5; i++){        // -> 3
    System.out.println("i = " + i);
    for(int j = 0; j < 3; j++){        // -> 1
        System.out.println("\tj = " + j);
        if(i == 3 && j == 1){
            break out;
        }
    }
}

: for문 앞에 이름을 지정해준다.(out, get, tag 아무거나 상관없음.)

: 지정한 이름을 "break (이름)" 형식으로 작성

: 두 번째 방법이 아주 간단하다.

continue문 사용법

for(int i = 0; i < 10; i++){
    System.out.println("start i = " + i);
    if(i > 6){
        continue;
    }
    System.out.println("end i = " + i);
} // i가 6인 경우에는 실행되지 않는다.

: start는 0 ~ 9까지 모두 출력되지만

: end는 0 ~ 6까지 출력된다.