DATA101
[Java] Switch~case 문을 활용한 정형화된 제어문 작성하기! 본문
안녕하세요,
오늘은 Java에서 if~else 보다 정형화된 조건형 제어문 Switch~case 구문에 대해 알아봅니다.
💡 학습 목표
Java에서 Switch~case 구문 활용방법과 사용 목적에 대해 이해한다.
1. Switch~case 구문이란?
Switch~Case 구문 if~else 구문처럼 조건식 중 하나로,
하나의 조건식 결괏값에 따라 각각 다른 연산을 수행하도록 프로그램을 설계할 때 주로 활용합니다.
이러한 경우에서는 if~else 구문을 그대로 활용하면 코드 자체가 간결하지 않을 뿐만 아니라,
위에서부터 조건식을 일일이 검증해야 하기 때문에 프로그램의 비용이 높아집니다.
2. Switch~case 구문 활용 예시
예를 들어,
아래 표와 같이 시험 점수에 따라 등급을 A, B, C, D, F 중 하나로 나누는 프로그램이 있다고 해보죠.
점수 | 등급 |
90~99 | A |
80~89 | B |
70~79 | C |
60~69 | D |
~59 | F |
if~else 구문 활용 시
먼저 이를 if~else 구문으로 작성해 보겠습니다.
public class Hello {
public static void main(String[] args) {
int score = new Random().nextInt(100);
String grade;
if (score > 90) {
grade = "A";
} else if (80 <= score && score < 90) {
grade = "B";
} else if (70 <= score && score < 80) {
grade = "C";
} else if (60 <= score && score < 70) {
grade = "D";
} else {
grade = "F";
} System.out.printf("score: %d, grade: %s", score, grade);
}
}
위와 같이 조건식에 일일이 점수 구간을 입력해야 하는 번거로움이 있습니다.
더불어, 만약 점수가 60점 미만이었다면 A, B, C, D 등급 여부까지 일일이 확인해야 하기 때문에
불필요한 연산이 늘어 프로그램의 비용 증가를 야기합니다.
Switch~case 구문 활용 시
따라서 위와 같은 문제를 풀 때는 Switch case 구문을 활용하여
프로그램을 작성하는 것이 코드의 가독성과 프로그램 동작 및 유지보수의 효율성을 높일 수 있습니다.
public class Hello {
public static void main(String[] args) {
int score = new Random().nextInt(100);
String grade;
switch (score / 10) {
case 9:{
grade = "A";
} break;
case 8:{
grade = "B";
} break;
case 7:{
grade = "C";
} break;
case 6:{
grade = "D";
} break;
default:{
grade = "F";
} break;
} System.out.printf("score: %d, grade: %s", score, grade);
}
}
switch 괄호 안에는 조건식을 작성합니다.
10점 구간으로 등급이 나뉘므로 점수를 10으로 나눈 몫에 따라 case를 나눌 수 있습니다.
즉, 95점은 10으로 나눈 몫이 9입니다.
따라서 조건식의 결괏값이 9인 case에서 grade를 A 등급으로 초기화하면 되며,
break문을 통해 switch case 구문을 바로 빠져나오게 됩니다.
이처럼 조건식에 해당하는 case 연산을 수행하고 곧바로 조건식을 빠져나오므로
여러 조건을 일일이 확인할 필요가 없어 비용을 줄일 수 있다는 장점이 있습니다.
클린 코드를 위한 Tip으로서,
각 case 마다 break문 이전까지를 중괄호('{', '}')로 묶어주는 게 원칙입니다.
위의 여러 case에서 연산이 수행되지 않았다면 default 내의 연산이 수행됩니다.
default는 if ~ else 구문에서 else와 같은 기능을 담당합니다.
실무에서 if~else 구문 여러 개를 사용해야 될 것 같다는 상황이 온다면,
반드시 switch~case 구문을 활용해 보는 시나리오를 생각해 보시길 바랍니다.
포스팅 내용에 오류가 있을 경우 아래에 댓글 남겨주시면 감사드리겠습니다.
그럼 오늘도 멋진 하루 만드시길 바랍니다.
고맙습니다 )
'SW 개발 > Java' 카테고리의 다른 글
[Java] JavaFX 설치 방법, 환경 설정, 사용 방법 (8) | 2021.11.24 |
---|---|
[Java] Syntactic Sugar 의미와 삼항연산자 활용 방법 공유! (0) | 2021.11.17 |
[Java] 큐(Queue) 자료구조 데이터 추가/삭제 방법!(+코드) (6) | 2021.11.16 |
[Java] 임의의 정수 데이터 생성하기! (Random 모듈 활용) (0) | 2021.11.14 |
[Java] 클린코드를 위한 for 반복문 작성 규칙+이클립스 단축키 공유! (0) | 2021.11.14 |