개발

10. 흐름 제어 점프문 본문

Backend/Java

10. 흐름 제어 점프문

Study 2021. 7. 18. 00:10

 

안녕하세요 

점프문에 관해서 포스팅 해보겠습니다!!!

 

 

1. Break

Break는 자신이 속한 가장 가까운 바깥쪽 루프(While, for, foreach와 같은 반복문) 또는 Switch문을 종료하는 역할을 합니다. 종료된 문의 뒤에 다른 문이 있는 경우 제어가 해당 문으로 전달됩니다.

좀 더 쉽게 말하면 2중 While문일 때 break를 만나게 되면, 자신과 가장 가까운 While문은 종료 시키고 바깥쪽의 While문으로 제어를 전달하게 됩니다.

아래의 예제에서는 사용자의 입력에 따라 종료할지 안 할지 정하게 됩니다.

 

1
2
3
4
5
6
7
8
9
10
11
12
13
import java.util.Scanner;
 
public class Break {
    public static void main(String[] args) {
        while (true) {
            System.out.println("Do you want to continue?(Y/N) : ");
            Scanner scanner = new Scanner(System.in);
            String answer = scanner.nextLine();
            if (answer.equals("N"))
                break;
        }
    }
}
cs

 

 

 

2. Continue

Continue문은 해당 문이 포함된 바깥쪽 반복문의 다음 반복으로 제어를 전달합니다.

예제를 보면 쉽게 이해할 수 있습니다. 짝수는 건너뛰고 홀수만 Console창에 찍어줍니다.

 

* Switch문에서는 continue를 사용할 수 없습니다.

1
2
3
4
5
6
7
8
9
public class Continue {
    public static void main(String[] args) {
        for (int i = 0; i < 10; i++) {
            if ((i % 2== 0)
                continue;
            System.out.printf("%d : Odd%n", i);
        }
    }
}
cs

 

 

 

3. Goto

아래는 특정 조건에 부합할 때 중첩된 루프에서 벗어나기 위한 예제입니다. break label의 경우 goto와 같이 중첩된 반복문을 탈출할 수 있습니다. 하지만 continue label은 레이블이 위치한 반복문에게 제어를 넘기는 역할을 합니다.

 

짝수 입력 시 계속 JUMP_FOR의 위치로 이동하여 EXIT_FOR의 영향을 받아 다시 for문 안으로 진입

홀수 입력 시 맞는 숫자까지 올라간 후 EXIT_FOR 으로 이동 for문을 탈출하게 됩니다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
import java.util.Scanner;
 
public class Goto {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        System.out.println("종료 조건(숫자)을 입력하세요 :");
 
        String input = scanner.nextLine();
 
        int input_number = Integer.parseInt(input);
        int exit_number = 0;
 
        EXIT_FOR: JUMP_FOR: for (int i = 0; i < 5; i++) {
            for (int j = 0; j < 5; j++) {
                for (int k = 0; k < 5; k++) {
                    exit_number++;
                    if (exit_number % 2 == 0)
                        continue JUMP_FOR;
                    if (exit_number == input_number)
                        break EXIT_FOR;
                    System.out.println(exit_number);
                }
            }
        }
 
        System.out.println("\nExit nested for...");
    }
}
cs

 

 

4. Return

 

 

return문은 자신이 속한 메소드의 실행을 종료하고 호출한 메소드로 제어를 반환합니다. 선택적 값을 반환할수도 있습니다. void형식(반환값이 없는)의 메소드인 경우 return문을 생략할 수 있습니다.

 

1
2
3
4
5
6
7
8
9
10
11
12
public class Return {
    public static double CalculateArea(int r) {
        double area = r * r * Math.PI;
        return area;
    }
 
    public static void main(String[] args) {
        int radius = 7;
        double result = CalculateArea(radius);
        System.out.printf("The area is %.2f%n", result);
    }
}
cs

 

 

 

하나 짚고 넘어가야 할것은 try~catch~finally구문에서 점프문은 선택적 finally를 벗어날 수 없다는 것입니다.

나중에 try~catch~finally문을 자세히 다루면서 다시 언급하겠습니다.

 

'Backend > Java' 카테고리의 다른 글

12. Java Method의 Signature  (0) 2021.07.18
11. 흐름 제어 반복문  (0) 2021.07.18
9. 흐름 제어 선택문  (0) 2021.07.17
8. 연산자(Operator)  (0) 2021.07.17
7. Enum 형식  (0) 2021.07.13