JAVA/조건문(if, switch)과 반복문(for, while)

[JAVA] break문, continue문, 이름 붙은 반복문 **

prize1209 2021. 6. 12. 16:44

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