[개발] - Java/Mega
Day05-2. Break문 예제
완벽한 장면
2023. 3. 20. 01:13
Break 예제
(1)
public class BreakTest {
public static void main(String[] args) {
int a = 0;
while(true) {
while(true) {
System.out.println("a : "+a);
if(a == 10) {
break;
}
a++; // a = a + 1;
}
}
}
실행순서
a = 0이 내려와요. 10인가요? 아니죠.
a 하나 증가해요. 다시 1이 올라가요. 10인가요? 아니죠. 그럼 1이 내려와서 다시 2가 되어 올라가요...
그러다가 10이 되면? 10 찍히고 break!
그 이후엔 계속 10만 찍히고 계속~~~ 10만 찍히면서 일부러 멈출 때까지 반복한다.
만약, continue 가 break 자리에 대신 생기면, 두 번째 while문의 처음으로 돌아가는 거겠지
즉, a++ 까지 아예 가질 못한다.
그래서
결과가 같더라도 "여길 갔다왔냐, 안 갔다왔냐"를 가벼이 여기시면 안돼요.
(2)
public class BreakTest2 {
public static void main(String[] args) {
int a = 0;
while(true) {
switch(a){
case 0:
System.out.println(a);
break;
default:
System.out.println("값이 없습니다. ");
}
}
}
}
0만 미친듯이 출력된다.
계속 0에 걸릴 것이기 때문에
이거 탈출하려면?
아까 했던 것처럼 check를 false 만들어주면 된다.
boolean check = true;
while(check) {
switch(a){
case 0:
System.out.println(a);
check = false;
break;
default:
System.out.println("값이 없습니다. ");
}
}
// check를 안 쓰고 싶다면?
while (a==0) {
switch (a) {
case 0:
System.out.println(a);
a++;
break;
default:
System.out.println("값이 없습니다. ");
}
}
// 0 한 번만 나오고 끝난다.
두 번째 예시에서, 일단 i 가 0이므로 우선 들어가야 해. 그래서 a는 0일 수밖에 없다.
0에서 1이 증가되면 더이상 0이 아니므로 조건에 맞지 않으니 나가게 되는 것.
728x90
반응형