문제
회원 등급에 따라 다른 쿠폰을 발급하는 프로그램을 만들어보자
이 프로그램은 int grade라는 변수를 사용하며, 회원등급(grade)에 따라 아래 쿠폰을 발급해야 한다.
● 1등급 : 쿠폰 1000
● 2등급 : 쿠폰 2000
● 3등급 : 쿠폰 3000
● 위 등급이 아닌 경우 : 쿠폰 500

각 쿠폰이 발급된 후에는 "발급받은 쿠폰" + 쿠폰값 을 출력해야 한다.
2등급 사용자 출력

 

if문 사용한 문제 코드)

package cond;

public class switch1 {
    public static void main(String[] args) {
        int grade = 2;
        int coupon;

        if (grade == 1) {
            coupon = 1000;
        } else if (grade == 2) {
            coupon = 2000;
        } else if (grade ==3) {
            coupon = 3000;
        } else {
            coupon = 500;
        }

        System.out.println("발급받은 쿠폰 : " + coupon);
    }
}

 

 

실행 결과)


 

switch 문이란?
if문을 조금 더 편리하게 시용할 수 있는 기능이다.
if 문은 비교 연산자를 사용할 수 있지만, switch 문은 단순히 값이 같은지만 비교할수 있다.

- switch 문 예시

switch (조건식) {
    case value1:
        // 조건식의 결과 값이 value1일 때 실행되는 코드
        break;
    case value2:
        // 조건식의 결과 값이 value2일 때 실행되는 코드
        break;
    default:
        // 조건식의 결과 값이 위의 어떤 값에도 해당하지 않을 때 실행되는 코드
}
  • 조건식의 결과 값이 어떤 case의 값과 일치하면 해당 case의 코드를 실행한다.
  • break 문은 현재 실행 중인 코드를 끝내고 switch 문을 빠져나가게 하는 역할을 한다.
  • 만약 break 문이 없으면, 일치하는 case 이후의 모든 case 코드들이 순서대로 실행된디. (무한반복..)
  • default 는 조건식의 결과값이 모든 case 의 값과 일치하지 않을 때 실행된다. if 문의 else와 같다.
    default 구문은 선택으로 반드시 포함할 필요는 없다. 단 모든 경우를 처리하고 싶을 때 사용 필요
  • if, else-if, else 구조와 동일하다.

 

기존 문제 switch문 변경 코드)

package cond;

public class switch2 {
    public static void main(String[] args) {
        int grade = 2;
        int coupon;

        switch(grade) {
            case 1:
                coupon = 1000;
                break;
            case 2:
                coupon = 2000;
                break;
            case 3:
                coupon = 3000;
                break;
            default:
                coupon = 500;
                break;
        }

        System.out.println("발급받은 쿠폰 : " + coupon);

    }
}

 

 

결과 출력)


※ break 문이 없으면?

break문이 없으면 어떻게 되는지 조건 변경!

2등급도 3등급과 같이 3000원 쿠폰을 준다고 가정해보자.

 

 

문제 코드)

package cond;

public class switch3 {
    public static void main(String[] args) {
        int grade = 2;
        int coupon;

        switch (grade) {
            case 1:
                coupon = 1000;
                break;
            case 2:
            case 3:
                coupon = 3000;
                break;
            default:
                coupon = 500;
                break;
        }
        System.out.println("발급받을 쿠폰 : " + coupon);
    }
}

 

 

실행 결과)

  • grade가 2 등급이면 case2가 실행된다.
  • case2 에는 break 문이 없다. 그러면 중단하지 않고 바로 다음에 있는 case 3의 코드를 실행한다.
    여기서 coupon = 3000; 을 수행하고 break 문을 만나 switch 문을 빠져나간다.
  • "발급받은 쿠폰 3000" 이 출력된다.

■ if문 vs switch문

  • switch 문의 조건식을 넣는 부분을 살펴보면 x > 10 과 같은
    참, 거짓의 결과가 나오는 조건이 아닌 단순 값만 넣을 수 있다.
  • switch 문은 조건식이 특정 case 와 같은지만 체크할 수 있다.
    즉 값이 같은지 확인하는 연산만 가능하다. (문자열 가능)
  • if 문은 참 거짓의 결과가 나오는 조건식을 자유롭게 적을 수 있다.
    예) x > 10, x == 10

※ swich 문 없이 if 문만 사용해도 되나 특정 값에 따라 코드를 실행할 때는

    switch 문이 if 문보다 간결한 코드 작성이 가능하다

 

# if 문

  - 복잡한 조건을 자룰 때 유용

  - 다양한 비교 연산자와 논리 연산자 사용 가능

  - 다양한 데이터 타입 처리 가능

 

# switch 문

  - 단일 변수의 여러 값을 비교할 때 유용

  - 가독성이 좋고, 명확하게 구분되는 값에 대해 처리할 때 적합

  - 정수, 문자열, 문자 등의 특정 타입에 대해 사용 가능


■ 새로운 switch 문

# 자바 14부터 새로운 switch 문이 정식 도입되었다.

 

예제 코드)

package cond;

public class switch3 {
    public static void main(String[] args) {
        int grade = 3;

        int coupon = switch (grade) {
            case 1 -> 1000;
            case 2 -> 2000;
            case 3 -> 3000;
            default -> 500;
        };
        System.out.println("발급받을 쿠폰 : " + coupon);
    }
}

# 기존 switch 문과 차이

  • -> 를 사용한다.
  • 선택된 데이터를 반환할 수 있다.

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

Java 조건문 문제와 풀이1  (0) 2024.06.28
Java 삼항 연산자  (0) 2024.06.28
Java if문2 - else if  (0) 2024.06.27
Java if문1 - if, else  (0) 2024.06.27
Java 연산자 문제 풀이  (0) 2024.06.27

+ Recent posts