break문, continue문, 이름붙은 반복문
break문
- 자신이 포함된 하나의 반복문을 벗어난다.
예제를 통해 break를 확인해 보자.
[Ex4_16]
public class Ex4_16 {
public static void main(String[] args){
int sum = 0;
int i = 0;
while(true) {
if(sum > 100)
break;
i = i+1;
sum = sum + i;
} // end of while
System.out.println("i=" + i);
System.out.println("sum=" + sum);
}
}
[실행 결과]
i=14
sum=105
while(true)는 조건식이 항상 참이므로 무한 반복문이다.
그래서 break를 통해 종료를 설정해 주었는데,
위의 코드의 경우, sum이 100을 초과하면 break문이 수행되도록 하여 while문을 벗어나도록 하였다.
continue문
- 자신이 포함된 반복문의 끝으로 이동 - 다음 반복으로 넘어감
예제를 통해 continue를 확인해 보자.
[Ex4_17]
public class Ex4_17 {
public static void main(String[] args) {
for(int i = 0; i <= 10; i = i + 1) {
if (i % 3 == 0)
continue; // 조건식이 참이 되어 continue문이 수행되면 블럭의 끝으로 이동한다. break문과 달리 반복문을 벗어나지 않는다.
System.out.println(i);
}
}
}
[실행 결과]
1
2
4
5
7
8
10
continue문이 수행되면, 블럭의 끝으로 이동한다. 반복문을 벗어나는 것은 아니다.
아래의 예제를 추가로 확인해 보자.
[Ex4_18]
import java.util.*;
public class Ex4_18 {
public static void main(String[] args) {
int menu = 0;
int num = 0;
Scanner scanner = new Scanner(System.in);
while(true) {
System.out.println("(1) square");
System.out.println("(2) square root");
System.out.println("(3) log");
System.out.println("원하는 메뉴(1~3)를 선택하세요. (종료:0)>");
String tmp = scanner.nextLine(); // 화면에서 입력받은 내용을 tmp에 저장
menu = Integer.parseInt(tmp); // 입력받은 문자열(tmp)을 숫자로 변환
if(menu == 0) {
System.out.println("프로그램을 종료합니다.");
break;
} else if ( !(1 <= menu && menu <= 3)) {
System.out.println("메뉴를 잘못 선택하셨습니다.(종료는 0);");
continue;
}
System.out.println("선택하신 메뉴는" + menu + "번입니다.");
}
}
}
메뉴를 선택하는 예제인데,
메뉴는 1~3을 선택할 수 있다. 1~3의 메뉴를 선택하면 해당 메뉴를 출력해주며 추가 메뉴를 선택할 수 있도록 반복문이 실행된다.
그런데, 0을 입력하면 메뉴 선택을 종료하며 반복문을 빠져나간다.
근데, 만약 1~3이외의 값을 입력하게 되면 "메뉴를 잘못 선택하셨습니다.(종료는 0)"이라는 문구를 보여주며 다시 반복문이 실행된다.
메뉴를 잘못 선택했을 때, continue문이 사용된다.
이름 붙은 반복문
- 반복문에 이름을 붙여서 하나 이상의 반복문을 벗어날 수 있다.
break; 문은 딱 하나의 반복문만 빠져나오게 되어있다.
그런데, 중첩 반복문을 벗어나야할 경우도 있다. 그럴때는 어떻게 할까?
반복문에 이름을 붙이고, break문 뒤에다가 벗어날 반복문들의 이름을 적어준다. 그러면 반복문이 중첩되어 있어도 한번에 벗어날 수 있다.
for문 앞에 이름을 붙여준다. 그러면, break문 뒤에 해당 for문의 이름을 적어주면, 해당 for문까지 break로 벗어난다.
즉, 둘 이상의 반복문을 벗어날 때는,
반복문 앞에 이름을 붙히고, 그다음에 break할 반복문의 이름을 적어주면 된다.
이러한 방법은 continue뒤에도 사용할 수 있긴 한데, continue문에 사용할 일은 거의 없다.(쓸 수 있다는 정도만 알아두자)
[Ex4_20]
import java.util.*;
public class Ex4_20 {
public static void main(String[] args) {
int menu = 0, num = 0;
Scanner scanner = new Scanner(System.in);
outer: // while문에 outer라는 이름을 붙인다.
while(true) {
System.out.println("(1) square");
System.out.println("(2) square root");
System.out.println("(3) log");
System.out.print("원하는 메뉴(1~3)를 선택하세요. (종료:0)>");
String tmp = scanner.nextLine(); // 화면에서 입력받은 내용을 tmp에 저장
menu = Integer.parseInt(tmp); // 입력받은 문자열(tmp)을 숫자로 변환
if (menu==0) {
// System.out.println("프로그램을 종료합니다.");
break;
}else if (!(1 <= menu && menu <= 3)){
System.out.println("메뉴를 잘못 선택하셨습니다.(종료는 0)");
continue;
}
for(;;) { // 무한 반복문
System.out.print("계산할 값을 입력하세요. (계산 종료:0, 전체 종료:99)>");
tmp = scanner.nextLine(); // 화면에서 입력받은 내용을 tmp에 저장
num = Integer.parseInt(tmp); // 입력받은 문자열(tmp)을 숫자로 변환
if(num == 0)
break; // 계산 종료. for문을 벗어난다.
if (num == 99)
break outer; // 전체 종료. for문과 while문을 모두 벗어난다.
switch(menu) {
case 1:
System.out.println("result="+ num*num);
break;
case 2:
System.out.println("result=" + Math.sqrt(num));
break;
case 3:
System.out.println("result=" + Math.log(num));
break;
}
} // for(;;)
} // while의 끝
System.out.println("프로그램이 종료되었습니다.");
} // main의 끝
}
[실행 결과]
(1) square
(2) square root
(3) log
원하는 메뉴(1~3)를 선택하세요. (종료:0)>1
계산할 값을 입력하세요. (계산 종료:0, 전체 종료:99)>2
result=4
계산할 값을 입력하세요. (계산 종료:0, 전체 종료:99)>0
(1) square
(2) square root
(3) log
원하는 메뉴(1~3)를 선택하세요. (종료:0)>2
계산할 값을 입력하세요. (계산 종료:0, 전체 종료:99)>2
result=1.4142135623730951
계산할 값을 입력하세요. (계산 종료:0, 전체 종료:99)>0
(1) square
(2) square root
(3) log
원하는 메뉴(1~3)를 선택하세요. (종료:0)>3
계산할 값을 입력하세요. (계산 종료:0, 전체 종료:99)>3
result=1.0986122886681096
계산할 값을 입력하세요. (계산 종료:0, 전체 종료:99)>99
프로그램이 종료되었습니다.
'JAVA' 카테고리의 다른 글
배열의 길이, 배열의 초기화 (0) | 2022.03.22 |
---|---|
배열의 생성과 선언, 배열의 인덱스 (0) | 2022.03.21 |
while문, do-while문 (0) | 2022.03.20 |
중첩 for문 (0) | 2022.03.20 |
for문 (0) | 2022.03.19 |
댓글
이 글 공유하기
다른 글
-
배열의 길이, 배열의 초기화
배열의 길이, 배열의 초기화
2022.03.22 -
배열의 생성과 선언, 배열의 인덱스
배열의 생성과 선언, 배열의 인덱스
2022.03.21 -
while문, do-while문
while문, do-while문
2022.03.20 -
중첩 for문
중첩 for문
2022.03.20