break문은 근접한 단 하나의 반복문만 벗어날 수 있기 때문에, 여러 개의 반복문이 중첩된 경우에는 break문으로 중첩된 반복문을 완전히 벗어날 수 없다. 이때 이름 붙은 반복문으로 하나 이상의 반복문을 벗어나거나 반복을 건너뛸 수 있다.
public class FlowEx33 {
public static void main(String[] args) {
// for문에 Loop1이라는 이름을 붙였다.
Loop1:
for (int i = 2; i <= 9; i++) {
for (int j = 1; j <= 9; j++) {
if (j == 5)
// break Loop1;
// break;
// continue Loop1;
continue;
System.out.println(i + "*" + j + "=" + i * j);
} // end of for i
System.out.println();
} // end of Loop1
}
}
2*1=2
2*2=4
2*3=6
2*4=8
2*6=12
2*7=14
2*8=16
2*9=18
3*1=3
3*2=6
3*3=9
3*4=12
3*6=18
3*7=21
3*8=24
3*9=27
4*1=4
4*2=8
4*3=12
4*4=16
4*6=24
4*7=28
4*8=32
4*9=36
5*1=5
5*2=10
5*3=15
5*4=20
5*6=30
5*7=35
5*8=40
5*9=45
6*1=6
6*2=12
6*3=18
6*4=24
6*6=36
6*7=42
6*8=48
6*9=54
7*1=7
7*2=14
7*3=21
7*4=28
7*6=42
7*7=49
7*8=56
7*9=63
8*1=8
8*2=16
8*3=24
8*4=32
8*6=48
8*7=56
8*8=64
8*9=72
9*1=9
9*2=18
9*3=27
9*4=36
9*6=54
9*7=63
9*8=72
9*9=81
i * 5의 식이 생략되었다.
public class FlowEx34 {
public static void main(String[] args) {
int menu = 0, num = 0;
Scanner scanner = new Scanner(System.in);
outer:
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;
}
for(;;) {
System.out.print("계산할 값을 입력하세요.(계산 종료:0, 전체 종료:99)>");
tmp = scanner.nextLine(); // 화면에서 입력받은 내용을 tmp에 저장
num = Integer.parseInt(tmp); // 입력받은 문자열(tmp)를 숫자로 변환
if(num==0)
break;
if(num==99)
break outer;
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의 끝
}// 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)>4
result=2.0
계산할 값을 입력하세요.(계산 종료:0, 전체 종료:99)>99
예제 4-32에서 코드를 추가한 것이다.
반복문만 떼어놓고 보면 무한 반복문인 while문 안에 또 다른 무한 반복문 for문의 중첩된 구조이다.
outer :
while(true) {
...
for( ; ; )
...
if(num==0) // 계산 종료. for문을 벗어난다.
break;
if*num==99) // 전체 종료. for문과 while문 모두 벗어난다.
break outer;
...
} // for( ; ; )
} // while(true)
break outer에 의해 for문과 while문 모두를 벗어나 프로그램이 종료된다.
'JAVA 04강 조건문과 반복문 > 반복문break, continue, 명명된반복문' 카테고리의 다른 글
continue문 (0) | 2021.07.15 |
---|---|
break문 (0) | 2021.07.15 |