분기문

break 문

안쪽 반복문 종료

while () {
    while() {
        break;
        }
    }

레이블이 표시된 반복문 종료

out : while () {
    while () {
        break out;
    }
}

예제 3-9

package sec06;

import java.util.Scanner;

public class Practice3_9 {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        int x, sum;
        while (true) {
            System.out.print("양의 정수를 입력하세요 : ");
            x = in.nextInt();
            if (x == 999)
                break;

            sum = 0;
            for (int i = 1; i <= x; i++)
                sum += i;
            System.out.printf("1부터 %d까지 합은 %d입니다. \n", x, sum);
        }
        System.out.println("프로그램을 종료합니다!");
    }
}

continue 문

반복문에만 사용되며, 현재 반복은 건너뛰고, 나머지 반복만 계속 실행함

Switch 문 ( 기존 Switch 문)

여러 경로 중 하나를 선택할 때 사용

switch(변수) {
    case 상수1 : 0개 이상의 실행문 // case 레이블
    ...
    ...
    default : 0개 이상의 실행문 // 선택사항임 아무것도 아니면 얘가 쓰임
}

예제

public static void main(String[] args) {
    int number = 2;
    switch (number) {
    case 3:
        System.out.print("*");

    case 2:
        System.out.print("*");

    case 1:
        System.out.print("*");
    }
}

실행결과
: case2 부터 끝까지 간다

**

이건 우리가 원하는 결과가 아니야

    public static void main(String[] args) {
        int number = 2;
        switch (number) {
        case 3:
            System.out.print("*");
            break;

        case 2:
            System.out.print("*");
            break;

        case 1:
            System.out.print("*");
            break;
        }
    }

break를 쓸 경우
case2의 실행문이 끝나면 switch가 끝남

개선된 Switch 문

필요성 : 기존 Switch문은 깔끔하지도 않고, 가독성도 떨어지고, break문의 누락으로 인한 오류가능성이 크다.

자바14부터 다음과 같은 변화 도입

  • 화살표 case레이블

  • Switch 연산식

  • 다중 case 레이블

  • Yield 예약어

static void whoIsIt(String bio) {
    String kind = switch (bio) {
    case "호랑이", "사자" -> kind = "포유류";
    case "독수리", "참새" -> kind = "조류";
    case "고등어", "연어" -> kind = "어류";
    default -> {
        System.out.print("어이쿠! ");
        yield "...";
    }    
    };
    System.out.printf("%s는 %s이다. \n", bio, kind);
}

Switch 연산식의 주의사항

가능한 모든 값에 대하여 일치하는 case 레이블이 없으면 오류가 발생

case 1 -> "1개";

case 2 -> "2개";

default -> "많이";

이렇게 default를 설정해줘야 오류가 안남

스위치문 예시

package sec06;

import java.util.Scanner;

public class Practice03_10 {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        System.out.print("등수 입력 : ");
        int x = in.nextInt();
        switch (x) {
        case 1 -> System.out.println("아주 잘했습니다");
        case 2, 3 -> System.out.println("잘했습니다");
        case 4, 5, 6 -> System.out.println("보통입니다");
        default -> System.out.println("노력해야겠습니다.");
        }

    }

}

case 는 comma 로 구분함

나눈 애를 인자로 받을 수도 있음.

package sec06;

import java.util.Scanner;

public class Practice03_11 {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        int x;
        char kind;
        while (true) {
            System.out.print("성적을 입력하세요 : ");
            x = in.nextInt();
            if (x < 0)
                break;
            kind = switch (x / 10) {
            case 10, 9 -> 'A';
            case 8, 7 -> 'B';
            case 6, 5 -> 'C';
            case 4 -> 'D';
            default -> 'F';
            };
            System.out.printf("당신의 성적 등급은 %s입니다.\n", kind);

        }
        System.out.println("프로그램을 종료합니다.");
    }
}

'TIL > [객체지향 프로그래밍] TIL' 카테고리의 다른 글

TIL (22.04.06)  (0) 2022.04.06
TIL (22.04.01)  (0) 2022.04.01
TIL (22.03.18)  (0) 2022.03.18
TIL (22.03.16)  (0) 2022.03.16
TIL 1 (22.03.11)  (0) 2022.03.11