1. break문
자신이 포함된 하나의 반복문 또는 switch문을 빠져 나온다.
주로 if문과 함께 사용해서 특정 조건을 만족하면 반복문을 벗어나게 한다.
예30) //숫자 1부터 계속 더해서 몇까지 더하면 합이 100을 넘는지 알아보기
public class FloweX30 {
public static void main(String[] args) {
int i = 0;
int sum = 0;
while (true) { // 무한반복문
if (sum > 100)
break;
i++; //break문이 실행되면 이 부분은 실행되지 않고 while문을 벗어난다.
sum += i; //break문이 실행되면 이 부분은 실행되지 않고 while문을 벗어난다.
}
System.out.println("i=" + i);
System.out.println("sum=" + sum);
}
}
2. continue문
continue문은 반복문 내에서만 사용할 수 있으며, 반복이 진행되는 도중에 continue문을 만나면 반복문의 끝으로 이동하여 다음 반복으로 넘어간다. for문의 경우 증감식으로 이동, do-while의 경우 조건식으로 이동한다.
continue문은 반복문 전체를 벗어나지 않고 다음 반복을 수행한다. 주로 if문과 함께 사용해 특정 조건을 만족하는 경우 continue문 이후의 문장들은 수행하지 않고 다음 반복으로 넘어가서 진행.
예31) //3의 배수 제외
public class FlowEx31 {
public static void main(String[] args) {
for (int i = 1; i <= 10; i++) {
if (i % 3 == 0)
continue;
System.out.println(i);
}
}
}
3의 배수인 경우 if (i % 3 == 0)이 참이되어 즉 continue문과 반복문의 블럭 끝 '}' 사이의 문장들을 건너뛰고 반복한다.
예32) //0을 누르면 종료될 때까지 메뉴 선택하기
import java.util.*;
public class FlowEx32 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
while (true) { // 무한반복문
System.out.println("원하는 메뉴를 선택하세요 (종료:0)");
System.out.println("(1) square");
System.out.println("(2) square root");
System.out.println("(3) log");
int menu = sc.nextInt();
if (menu == 0) {
System.out.println("프로그램을 종료합니다");
break;
} else if (!(1 <= menu && menu <= 3)) {
System.out.println("잘못 선택하셨습니다");
continue;
}
System.out.println("선택하신 메뉴는" + menu + "번 입니다");
}
}
}
메뉴를 잘못 선택한 경우, continue문으로 다시 메뉴를 보여주고, break문으로 반복문을 벗어나 종료된다.
3. 이름 붙은 반복문
break문은 근접한 하나의 반복문만 벗어날 수 있다.
여러 개의 반복문이 중첩된 경우, 중첩된 반복문을 완전히 벗어날 수 없다. 그럴 때 중첩반복문 앞에 이름을 붙여 한번에 이름을 소환해 벗어날 수 있다.
public class FlowEx33 {
public static void main(String[] args) {
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);
}
System.out.println();
} // end of Loop1;
}
}
j=5일 때, 반복문 Loop1을 벗어나도록 했으므로 2단의 4번째 줄까지 밖에 출력되지 않았다. 만일 반복문의 이름이 지정되지 않은 break문이었다면 2단부터 9단까지 네 줄 씩 출력되었을 것이다.
예34) //무한 반복문 중첩
import java.util.*;
public class FlowEx34 {
public static void main(String[] args) {
int menu = 0, num = 0;
Scanner sc = new Scanner(System.in);
outer: while (true) {
System.out.println("원하는 메뉴를 선택하세요 (종료:0)");
System.out.println("(1) square");
System.out.println("(2) square root");
System.out.println("(3) log");
String tmp = sc.nextLine();
menu = Integer.parseInt(tmp);
if (menu == 0) {
System.out.println("프로그램을 종료합니다");
break;
} else if (!(1 <= menu && menu <= 3)) {
System.out.println("잘못 입력했습니다");
continue;
}
for (;;) {
System.out.println("계산할 값을 입력하세요(종료:0, 전체 종료:99)");
tmp = sc.nextLine();
num = Integer.parseInt(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;
}
}
}
}
}
Math.sqrt() : Math.sqrt()로 제곱근을 구할 수 있다. sqrt는 Square root를 의미하며 제곱근이라는 뜻.
public static double sqrt(double a)
- 인자로 a를 전달하면 a의 제곱근이 리턴.
- 인자로 0을 전달하면 0이 리턴.
- 인자로 음수나 NaN(Not a Number)를 전달하면 NaN이 리턴.
'JAVA > 조건문(if, switch)과 반복문(for, while)' 카테고리의 다른 글
[JAVA] while문 (0) | 2021.06.12 |
---|---|
[JAVA] 향상된 for 문 (0) | 2021.06.12 |
[JAVA] 중첩 for문 예제(구구단/별찍기) (0) | 2021.06.10 |
[JAVA] for문 (0) | 2021.06.10 |
[JAVA]Math.random() (0) | 2021.06.09 |