switch문은 if문과 조건문에 해당된다. 그런데 if만 쓰면 되는 것 아닐까?하고 생각하겠지만 switch문에도 나름 쓰이는 경우가 있다. 다음 아래의 문제를 코드로 풀어보자.
당신은 회원 등급에 따라 다른 쿠폰을 발급하는 프로그램을 작성해야 한다.
이 프로그램은 int grade 라는 변수를 사용하며, 회원 등급( grade )에 따라 다음의 쿠폰을 발급해야 한다.
- 1등급 : 쿠폰 1000
- 2등급 : 쿠폰 2000
- 3등급 : 쿠폰 3000
- 위의 등급이 아닐 경우 : 쿠폰 500
각 쿠폰이 할당된 후에는 "발급받은 쿠폰" + 쿠폰값을 출력해야 한다.
문제) 2등급 사용자가 발급받은 쿠폰을 출력해보자.
먼저 if 문을 사용해서 코드를 작성해보겠다.
package practices
public class IfEx1{
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);
}
}
[실행결과]
발급받은 쿠폰 2000
switch문
switch문은 앞서 배운 if문을 좀 더 편리하게 사용할 수 있다.
switch(조건식){
case value1:
//조건식의 결과값이 value1일 때 실행되는 코드
break; //항상 끝에는 break를 달아줘야한다. 그러지 않으면 밑에까지 내려가서 다른 값을 출력한다.
case value2:
//조건식의 결과값이 value2일 때 실행되는 코드
break;
default:
//위의 조건식의 결과값이 어떤 값에도 해당하지 않을 때 실행되는 코드
}
- break문은 현재 실행 중인 코드를 끝내고 switch문을 빠져나가게 하는 역할을 한다.
- 만약 break문이 없으면 일치하는 case이후 모든 case 코드들이 순서대로 실행된다.
- default는 조건식의 결과값이 모두 불일치할 때 실행되는 코드로 if문의 else와 같다.
- default는 선택사항이다.
그러면 앞서 작성한 코드를 switch문으로 변경해보겠다.
package practices
public class IfEx1{
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);
}
}
[실행결과]
발급받은 쿠폰 2000
새로운 switch문
기존의 코드보다 더 깔끔하게(?) 보이기 위해 자바 14부터는 새로운 switch문이 정십 도입되었다.
package practices
public class IfEx1{
public static void main(String[] args){
int grade = 2; //등급 변수 생성 및 초기화
int coupon = switch (grade) {
case 1 -> 1000;
case 2 -> 2000
case 3 -> 3000;
default -> 4000;
}; //세미콜론을 사용해야 한다.
System.out.println("발급받은 쿠폰 " + coupon);
}
}
정리하자면 swtich문 없이 if문만 사용해도 된다. 하지만 특정 값에 따라 코드를 실행할 때는 switch 문을 사용하는게 더 간결한 코드를 짤 수 있다.
'프로그래머스' 카테고리의 다른 글
[프로그래머스]가운데 글자 가져오기(java) / substing / charAT / String.valueOf() / 트러블 슈팅 (3) | 2024.09.30 |
---|---|
[프로그래머스] 제일 작은 수 제거하기(Java) (1) | 2024.09.27 |
[프로그래머스]자릿수 더하기 (0) | 2024.09.07 |
[프로그래머스] 배열의 평균값 - 반복문 활용, 형변환 (0) | 2024.09.06 |
[프로그래머스]짝수의 합 - 반복문 활용, if문 활용 (0) | 2024.09.05 |