[Java] 조건문과 반복문_Switch

2021. 12. 27. 19:53·TIL/Java
728x90
반응형

기본 문법 (Syntax)

switch (변수 또는 식) {

     case 경우 1:

          수행부분 1

          break;

     case 경우 2:

          수행부분 2

          break;

     defalut:

          기본 수행부분

}

 

if문의 조건 부분은 불린 결과값을 내는 식이었다면 switch문의 조건 부분은 숫자, 문자열 등의 결과값을 내는 식이다.

그리고 그 결과값에 따라 실행 되는 코드가 정해진다.

int i = 10;
if (i % 3 == 0) { // i < 20 : 불린 식, 변수, 메소드
    System.out.println("C 구역입니다.");
} else if (1 % 3 == 1) {
    System.out.println("A 구역입니다.");
} else {
    System.out.println("B 구역입니다.");
}

switch (i % 3) { // i : 불린이 아닌 식, 변수, 메소드
    case 0:
        System.out.println("C 구역입니다.");
        break;
    case 1:
        System.out.println("A 구역입니다.");
        break;
    default:
        System.out.println("B 구역입니다.");
        break;
}

합격-불합격, 옳다-그르다 등과 같은 방식으로 흐름을 나누는 것보다 여러 개의 동등한 조건의 나열에는 switch문이 더 편리합니다.

예제 1

/*
 * A+: 100
 * A : 90-99
 * B : 80-89
 * C : 70-79
 * D : 60-69
 * F :  0-59
 */

// 시험 점수
int score = 97;

// 성적
String grade;

위의 기준에 따라 점수를 주는 프로그램을 만들어보자.

정수 score를 정수 10과 나누면 소수 부분이 버려지게 된다.(score / 10 하면 9.7이었는데 소수 부분이 버려지고 9가 됨)이 점을 이용하면 score가 90-99일 때를 score / 10이 9와 같을 때로 얘기할 수 있다. 마찬가지로 score가 80-89일 때 score / 10은 8이고, score가 70-79일 때 score / 10은 7이다.

 

스위치 문의 조건부에 score 나누기 10을 넣어보자.

switch (score / 10) {
    ...
}

그리고 switch문의 내용을 적어야 하는데 score / 10이 각각 10, 9, ..., 6인 경우를 적고, 모두 아닐 경우의 default도 적어보자.

switch (score / 10) {
    case 10:
        grade = "A+";
        break;
    case 9:
        grade = "A";
        break;
    case 8:
        grade = "B";
        break;
    case 7:
        grade = "C";
        break;
    case 6:
        grade = "D";
        break;
    default:
        grade = "F";
        break;
}

 

score / 10이 10이면 case 10:의 수행 부분으로 들어가서 "A+"가 grade에 지정된다. 그리고 break 때문에 바로 switch문은 끝난다. 마찬가지로 score / 10이 9면 case 9:의 수행 부분으로 들어가서 "A"가 grade에 지정되고, break 때문에 switch문이 끝난다. 이런 식으로 score / 10이 8, 7, 6인 경우도 비슷하게 동작한다. 만약 score / 10이 10, 9, 8, 7, 6 중에 해당되는 값이 없으면 default의 수행 부분으로 들어가서 "F"가 grade에 지정되고 switch문은 끝난다.

switch문이 끝나고 grade의 값이 뭔지 출력해보자.

System.out.println("성적: " + grade);
성적: A

정수 97 나누기 정수 10은 정수 9이기 때문에 "A"가 나온다.

 

score를 75로 바꾸고 실행해보면:

// 시험 점수
int score = 75;
성적: C

"C"가 출력된다.

 

40으로 바꾸고 실행해보면:

// 시험 점수
int score = 40;
성적: F

default로 들어가서 "F"가 출력된다.

 

예제 2

이번에는 switch의 조건 변수를 앞에서 사용했던 문자열 변수 grade로 하자.

switch (grade) {
    case "A+":
    case "A":
    case "B":
        System.out.println("참 잘했어요!");
        break;
    case "C":
    case "D":
        System.out.println("조금만 더 노력해 볼까요?");
        break;
    case "F":
        System.out.println("Fail입니다.");
    default:
        System.out.println("다시 수강해주세요.");
        break;
}

두 번째 예시는 break문를 주의 깊게 보자!

case "A", case "B"사이에 아무런 명령도 없고 break문도 없다.

만약 grade가 "A+"면 case "A+"로 들어왔다가, 바로 case "A"로 넘어가고, 또 바로 case "B"로 넘어간다.

break가 없기 때문이다. 즉, 이 switch문은 grade가 "A+" 또는 "A" 또는 "B"이면 "참 잘했어요."가 출력되고, "C" 또는 "D"이면 "조금만 더 노력해 볼까요?"가 출력되는 것이다.

만약 "F"면? 여기 case "F"로 들어와서 "Fail 입니다."가 출력되고, break가 없으니 default로 넘어가서 "다시 수강해 주세요" 까지 출력이 된다.

728x90
반응형

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

[Java] 조건문과 반복문_For  (0) 2021.12.27
[Java] 조건문과 반복문_While  (0) 2021.12.27
[Java] 조건문과 반복문_if, else if, else 정리  (0) 2021.12.27
[Java] 형 변환 정리  (0) 2021.12.27
[Java] 연산자 정리  (0) 2021.12.27
'TIL/Java' 카테고리의 다른 글
  • [Java] 조건문과 반복문_For
  • [Java] 조건문과 반복문_While
  • [Java] 조건문과 반복문_if, else if, else 정리
  • [Java] 형 변환 정리
야리니
야리니
오늘보다 내일 더 성장하는 개발자가 되기 위한 야리니 블로그입니다 :)
    반응형
    250x250
  • 야리니
    야리니의 step by step
    야리니
  • 링크

    • GitHub
    • Linkedin
  • 전체
    오늘
    어제
    • 분류 전체보기 (482) N
      • TIL (381) N
        • Java (97)
        • Kotlin (28)
        • JPA (16)
        • Spring (37)
        • Oracle (22)
        • JDBC (7)
        • Web(HTML, CSS, JS, jQuery) (90)
        • View Template (31)
        • AWS (7)
        • HTTP (7)
        • CS (6) N
        • Linux, Unix (2)
        • Python (20)
        • Project (1)
      • Trouble Shooting(Error) (39) N
      • Algorithm (15)
      • Git,GitHub (8)
      • Diary (24)
      • 독서 (9)
      • Etc (6)
        • Mac (1)
        • 학원준비과정 (2)
  • 블로그 메뉴

    • 방명록
    • 태그
  • 공지사항

    • 안녕하세요 :)
  • 인기 글

  • 태그

    java
    CSS
    쌍용교육센터
    백엔드 개발자
    oracle
    국비지원학원
    Kotlin
    코틀린
    java기초
    HTML
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.2
야리니
[Java] 조건문과 반복문_Switch
상단으로

티스토리툴바