코드 그라데이션
Day05-1. Break, Continue, 그리고 퀴즈 본문
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 제외하고) 나온다는 의미.
값 초기화하고는 무관하지.
다음 장에서 예시
'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 |