코드 그라데이션

Day05-1. Break, Continue, 그리고 퀴즈 본문

Java/Mega

Day05-1. Break, Continue, 그리고 퀴즈

완벽한 장면 2023. 3. 19. 23:52

Break

Break문은 switch 케이스문을 위해 탄생한 게 아니라,

정확히는 반복문을 위해서 탄생한 아이에요.

 

탈출할 때 쓰는 반복문.

제일 인접한 반복문을 탈출한다.

** 무한루프의 상태에서도 break 를 사용하면 탈출 가능

 

기본구조

While(true){

    if(조건){

        break;

    }

}

 

"가장 인접한 반복문을 탈출한다의 의미는 무엇일까?

while(true){

     while(true){

         if(조건){

              break;

         }

     }  

}

 

지금 위의 경우는 빨간색 부분만 탈출한다(break의 작동 범위) 라는 것이지.

(확인 가능하겠지만, 이것은 둘 다 무한루프임.)

 

그렇다면, 바깥쪽 감싸고 있는 무한루프까지 탈출하려면 어떻게 해야 할까?

=> 해당하는 범위의 while문에도 break를 한 번 더 써주면 된다.

이렇게!

while(true){
     while(true){
         if(조건){
              break;
         }
     }
   	 break; // 잊지 말자, break는 "가장 인접한 반복문" 을 탈출하는 명령문이라는 것을!
}

 

 

break가 switch에 있으면?

지금 switch문만 탈출하게 되는 건데, 그래도 while(true)문을 못 빠져나가니까 다시 들어오는 아이러니한 상황이 발생한다.

while(true){

    switch(){
        case 5:
        break;
    }
}

 

Boolean check = true;

while(check){

    switch(){
        case 5:
            check = false;
            break;
    }
}

=> check가 false로 바뀌었기 때문에 탈출할 수 있게 되었다.

 

 

그래서 매우 중요한 것인데, 문제적인 제약사항이 존재하기 때문에, break 앞에 뭐가 있는지 고려해서 나가게 하는 것을 

정확하게 고민해봐야 한다. 늘.

즉, 중첩되어 있을 때 어떻게 나갈지를 고민해라.

 

 

*** 중첩이란? ***

만약 이런 코드가 있다고 하면,

for(int i = 0; i < 5; i++){
   for(int j = 0; j < 5; j++){
   }
}

발생할 수 있는 모든 경우의 수는

i = 0    j  =0, 1, 2, 3, 4

i = 1    j = 0, 1, 2, 3, 4

i = 2    j = 0, 1, 2, 3, 4

i = 3    j = 0, 1, 2, 3, 4

i = 4    j = 0, 1, 2, 3, 4

 

지금 정확하게 이 반복문은 i =5 가 되는 순간 탈출한다!

 

 

 

Continue

(break문보다는 덜 쓰임)

:  반복을 다시 처음으로 돌린다.

단, 값이 초기화 되지 않음!

 

예시

for(int i = 0; i<10; i++){

      if(i == 5){
         continue;
      }
    System.out.println(i);
}

=> 처음에 내려오면 i = 0, 그런데 i는 5가 아니지, 그러니까 건너뛰어. i를 출력하면? 0이 나와.

     다시 올라가서 값을 비교한다. 이제 i의 값은 1(i++). i는 5가 아니지 그러니까 건너뛰고 내려간다. i 출력 시? 1 나옴.

     반복...

 

     그러다가 i == 5 가 되는 경우가 있겠지!!!

     그럼 이 조건이 true지!!!

    continue를 만나면, 이 아래 명령문을 실행하지 않고, 위로 올라간다(처음으로 돌아간다.)

     즉, i 값으로 5가 출력되지 않는다는 말!

 

    그리고 다시 6부터 9까지 반복!

 

즉, 전체 결과값을 출력해보면

0
1
2
3
4
6
7
8
9

이렇게(5 제외하고) 나온다는 의미.

값 초기화하고는 무관하지.

 

다음 장에서 예시

728x90

'Java > Mega' 카테고리의 다른 글

Day05-3. Continue문 예제  (0) 2023.03.20
Day05-2. Break문 예제  (0) 2023.03.20
String 변수 = ""; 를 왜 썼는지 chat GPT에게 질문  (0) 2023.03.19
break문 chat GPT 설명 / 메서드화 연습  (0) 2023.03.17
Day04 - 반복문  (0) 2023.03.17
Comments