문제
회원 등급에 따라 다른 쿠폰을 발급하는 프로그램을 만들어보자
이 프로그램은 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 |