Coding Note/Java

Java 3-3) break문 / switch, for, while문에서 사용하기

푸린이 2021. 12. 10. 00:22

- break == 탈출 escape == loop를 멈춘다

- switch, for, while, do while문과 같이 씀

 

// switch문에서 break

switch (variable) {

      case value:

            processing

            break;

}

 

// for문에서 break

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

      if (조건) {

            break;            ← 조건이 참일 때 loop를 멈추고 싶다면

      }

}

 

// while문에서 break

w = 0;
while (w < 100) {
      if (조건) {
            break;
      }
      w++;
}

 

* break 예시

// for문에서 break

for(int i = 0; i < 10; i++) {
	System.out.println("for loop " + i);
	if(i == 5) {
		break;
	}
}

- i가 5일 때, 출력이 되고 나서 if문 발동돼서 break

- i = 5가 출력되지 않고 break 되려면 출력문을 if문 뒤에 작성

 

// for문 배열변수에서 break

int array[] = {1, 4, -7, 3, 8};

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

- array[2]까지 출력되고 array[2]가 음수이기 때문에 break

 

// while문에서 break

Scanner sc = new Scanner(System.in);

int number;

while(true) {
	System.out.print("숫자를 입력(>0) = ");
	number = sc.nextInt();

	if(number > 0) {
		System.out.println("입력한 수 = " + number);
		break;
	}
	System.out.println("양수를 입력해주세요");
}

- 정수를 입력받아 입력받은 수를 출력하는 코드

- if문) 0보다 큰 수가 입력되면 → 입력 받은 수가 출력되고 → break

- while문) 음수가 입력되면 → "양수를 입력해주세요"가 출력되면서 → 다시 while문 반복 (항상 true인 조건)

- 출력값을 봤을 때, 음수가 입력되면 다시 입력받게끔 나오고, 양수를 입력했을 땐 입력한 수가 나오고 끝나는 것을 알 수 있다.

 

// 이중 for문 탈출

for (int i = 0; i < 10; i++) {
	System.out.println("i = " + i);
	for (int j = 0; j < 8; j++) {
		System.out.println("\tj = " + j);

		if(i == 5 && j == 3) {
			break;		// loop 하나당 break 하나만 적용 (안쪽 for문만 탈출)
		}
	} 
}

- 안쪽 for문에만 break를 적용시켰기 때문에 i = 5, j = 3까지 출력되고 break된 후 바깥 for문부터 다시 출력된다.

for (int i = 0; i < 10; i++) {
	System.out.println("i = " + i);
	for (int j = 0; j < 8; j++) {
		System.out.println("\tj = " + j);

		if(i == 5 && j == 3) {
			break;		// loop 하나당 break 하나만 적용 (안쪽 for문만 탈출)
		}
	} if(i == 5) {
		break;		// 바깥 for문에도 break 적용
	}
}

- 나는 바깥쪽 for문도 if문을 이용해 break를 걸었다. 그래서 i = 5, j = 3 이후는 값이 출력되지 않았다!

- 아래부터는 강사님이 알려주신 이중for문 탈출법 2가지

 

// 이중 for문 두가지 다 탈출하는 법

    // 1. loop문의 개수에 맞게 break 설정

boolean b = false;

for (int i = 0; i < 10; i++) {
	System.out.println("i = " + i);
	for (int j = 0; j < 8; j++) {
		System.out.println("\tj = " + j);

		if(i == 5 && j == 3) {
			b = true;		
		}
		if(b == true) {
			break;
		}
	}
	if(b == true) {
		break;
	}
}

- boolean 자료형을 이용한 if문으로 if문의 조건이 성립되면 변수b가 true가 되고 그럼 break가 작동하고, 바깥의 for문에도 마찬가지로 if문을 이용해 break를 작동시킨다.

- 내가 푼 방식과 거의 흡사하다.

- 이때 변수 b의 값을 확인해보면 true로 출력된다.

 

    // 2. break를 세팅

getout:for (int i = 0; i < 10; i++) {
	System.out.println("i = " + i);
	for (int j = 0; j < 6; j++) {
		System.out.println("\tj = " + j);

		if(i == 2 && j == 3) {
			break getout;		// getout 걸어놓은 부분도 같이 탈출됨 
		}
	}
}

- 바깥쪽 for문 앞에 getout을 걸어줘서 안쪽 for에 건 break가 바깥에도 같이 적용됨

- getout부분은 사용자 지정 : 적는 사람 마음대로

- 1번보다 훨씬 간결하게 표현가능하다.