코드 그라데이션

Day05-2. Break문 예제 본문

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
Comments