개발 지식/Java

[Java] Switch 분기문

devGSP 2022. 7. 16. 08:00
반응형
이 게시물은 아래 버전을 기준으로 작성되었습니다.

Java : 11.0.15.1
OS : Windows 10 Pro
IDE : Eclipse IDE for Enterprise Java and Web Developers - 2022-06

 

Switch 분기문

 

Switch 분기문

 

If 분기문에 이어 이번 포스트에서는 Switch 분기문을 다룬다. If 분기문과 비슷하지만 조건을 논리식으로 지정하는 것이 아닌, 특정 값의 비교로만 사용할 수 있다는 한계점이 있다. 본래 비교하는 값은 정수만 가능했으나, JDK 1.7 버전 이상부터는 문자열 비교도 가능해졌다. If 분기문에 비해 범용성이 좋진 않으나, 값 비교의 조건이 많아질 때 가독성이 좋아 보이는 장점이 있다.

 

 

문법

 

switch ([정수 혹은 문자열]) {
  case [비교할 값1] :
    [실행문(들)1];
    break; (생략할 경우 아래의 코드들까지 전부 실행함. 특별히 의도가 없다면 반드시 작성한다.)
  case [비교할 값2] :
    [실행문(들)2];
    break;
(...)
  case [비교할 값n] :
    [실행문(들)n];
    break;
  default :
    [실행문(들)]; (if-else 분기문의 else와 같은 역할. 위의 조건들이 모두 거짓일 경우 처리할 실행문을 작성)
}

 

이제 아래 예시를 통해 살펴보자.

 

package com.devgsp.study.basic;

public class SwitchStatement {
	public static void main(String[] args) {
		// switch 분기문 예시 코드1 int
		int num = 3000;
		
		switch (num) {
			case 3000 :
				System.out.println("삼천포");
				break;
			case 2000 :
				System.out.println("이천쌀");
				break;
			case 1000 :
				System.out.println("일천..은 드립이 생각 안 난다.");
				break;
		}
		System.out.println("==============================");
		// 에러! 실수는 switch 분기문으로 비교할 수 없다!
		//double noNum = 3.5;
		//switch (noNum) {
		
		//}	
		
		// switch 분기문 예시 코드2 String
		String food = "국밥";
		
		switch (food) {
			case "국밥" :
				System.out.println("??? : 야! 햄버거를 왜 사먹냐? 그 돈이면 차라리 뜨끈~한 국밥 든든~하게 먹고 말지.");
				break;
			case "돈까스" :
				System.out.println("??? : 돈까스 좋아하세요?");
				break;
			case "군만두" :
				System.out.println("??? : 그냥 애기 몇 입 주게 낭낭하게 넣어 주세요.");
				break;
		}
		System.out.println("==============================");
		
		// switch 분기문 예시 코드3 default
		// 위의 case들이 모두 거짓일 때 실행된다.
		String fruit = "사과";
		
		
		switch (fruit) {
			case "바나나" :
				System.out.println("버눼널");
				break;
			case "오렌지" :
				System.out.println("어륀지");
				break;
			case "파인애플" :
				System.out.println("파인애뽀올");
				break;
			default :
				System.out.println("지랄 좀 적당히 해라!");
		}
		System.out.println("==============================");
		
		// switch 분기문 예시 코드4 break
		// case마다 break를 쓰지 않으면 진입한 case 아래에 작성된 case 코드가 모두 실행된다.
		int money = 10000;
		System.out.println("히히, 1000원만 써야지~");
		
		switch (money) {
			case 10000 :
				money = money - 1000;
				System.out.println("남은 돈 : " + money + "원");
				System.out.println("이제 집에 가야겠..");
			case 567567456 :
				money = money - 1000;
				System.out.println("남은 돈 : " + money + "원");
				System.out.println("음.. 딱 하나만 더?");
			case 56756745 :
				money = money - 1000;
				System.out.println("남은 돈 : " + money + "원");
				System.out.println("어..?");
			case 5675674 :
				money = money - 1000;
				System.out.println("남은 돈 : " + money + "원");
				System.out.println("어어..?");
			case 567567 :
				money = money - 1000;
				System.out.println("남은 돈 : " + money + "원");
				System.out.println("어어어..?");
			default :
				money = 0;
				System.out.println("남은 돈 : " + money + "원");
				System.out.println("내 돈 어디 갔냐..");
		}
	}
}

 

switch1
SwitchStatement.java 실행 결과

 

 

 

[예제]

1. com.devgsp.study.basic
패키지에 MySwitchStatement 클래스를 생성하자.
2. 성적을 저장할 String형 변수 yourGrade, 점수를 저장할 int형 변수 yourScore를 선언하자.
3. 점수가 90~100점이면 성적이 A, 점수가 80~89점이면 성적이 B, 점수가 70~79점이면 성적이 C, 점수가 60~69점이면 성적이 D, 그 외 점수이면 성적이 F로 설정되는 코드를 작성하자. 단, If 분기문이 아닌 Switch 분기문을 사용하자.
4. 아래와 같은 출력이 이루어지도록 코드를 작성하고, yourScore 변수 값을 변경하면서 분기문의 동작이 잘되는지 테스트해 보자.

당신의 성적은 X입니다.

Hint : 절대로 case 100, case 99, case 98, (...), case n 이런 식으로 작성하지 말고 여태까지 배워 온 것을 활용해 보자.

 

더보기
package com.devgsp.study.basic;

public class MySwitchStatement {
	public static void main(String[] args) {
		String yourGrade;
		int yourScore = 100;
		int switchNum = yourScore / 10;
		
		switch (switchNum) {
			case 10 :
			case 9 :
				yourGrade = "A";
				break;
			case 8 :
				yourGrade = "B";
				break;
			case 7 :
				yourGrade = "C";
				break;
			case 6 :
				yourGrade = "D";
				break;
			default :
				yourGrade = "F";
		}	
		System.out.println("당신의 성적은 " + yourGrade + "입니다.");
	}
}

 

switch2
MySwitchStatement.java 실행 결과

 

 

반응형

'개발 지식 > Java' 카테고리의 다른 글

[Java] For 반복문  (0) 2022.07.18
[Java] While / Do-While 반복문  (0) 2022.07.17
[Java] If 분기문  (0) 2022.07.15
[Java] 연산자  (0) 2022.07.14
[Java] 형 변환  (0) 2022.07.13