Recent Posts
Recent Comments
Archives
반응형
250x250
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
Today
Yesterday

Total
05-17 00:03
관리 메뉴

Hey Tech

[Java] Switch~case 문을 활용한 정형화된 제어문 작성하기! 본문

SW 개발/Java

[Java] Switch~case 문을 활용한 정형화된 제어문 작성하기!

Tony Park 2021. 11. 15. 00:03
728x90
반응형

안녕하세요,

오늘은 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 구문을 활용해 보는 시나리오를 생각해 보시길 바랍니다.


포스팅 내용에 오류가 있을 경우 아래에 댓글 남겨주시면 감사드리겠습니다.

그럼 오늘도 멋진 하루 만드시길 바랍니다.

고맙습니다 )

728x90
반응형
Comments