개발자 미니민의 개발스터디

8. switch case 문

by mini_min

◾ switch 문에서는 byte, short, int, char, string, enum 가 변수로 사용될 수 있다.

변수 또는 수식이 올 수 있다.

switch 문에서 case 로 가면 해당 값의 case 문이 실행되고, 그 아래 case 문 수식도 모두 실행된다.

아래에서 case 2 로 넘어가서 case 2와 아래 case 1 이 실행된다.

int a = 2;

switch (a) {	// switch(변수 or 수식)
case 3 : System.out.print("*");	//case(리터널 or 상수)
case 2 : System.out.print("$");
case 1 : System.out.print("#");
}

 

◾ case 문 수식에 break; 를 걸어주면 아래 case 문은 실행되지 않는다.

switch(n) {
case 3: System.out.print("*");
        System.out.print("#");
        System.out.print("$");
        break;
case 2:	System.out.print("*");
        System.out.print("#");
        break;
case 1:	System.out.print("*");
        break;
}

 

◾ 마지막 case 문의 break 는 생략이 가능하다.

Scanner sc = new Scanner(System.in);
int n;

System.out.println("정수 ? ");
n = sc.nextInt();

switch (n%3) {
case 0 : System.out.println(n + " : 3의 배수"); break;
case 1 :
case 2 : System.out.println(n + " : 3의 배수가 아님"); break;
    // 마지막 break 는 생략 가능함

}

 

◾ case 문을 여러번 쓸 수 있고, default 문은 다른 case 문에 해당되지 않는 값이 들어왔을 때 실행된다.

Scanner sc = new Scanner(System.in);

int n;

System.out.println("정수 ? ");
n = sc.nextInt();

// default : case 조건을 만족하는 것이 없는 경우 실행, 위치는 상관없음


switch (n) {
case 3 : System.out.println("***"); break;
case 2 : System.out.println("**"); break;
case 1 : System.out.println("*"); break;
default : System.out.println("입력 에러 입니다."); break;

}

 

◾ String, char 값이 변수로 올 수 있으며, case 문을 여러개 겹쳐서 사용도 가능하다.

Scanner sc = new Scanner(System.in);
char a;


System.out.print("한 문자? ");
a = sc.next().charAt(0);

// 입력 받은 문자가 문자숫자인지 판별
switch(a) {
case '0' : case '1' : case '2' : case '3' : case '4' : case '5' :
case '6' : case '7' : case '8' : case '9' : System.out.println("숫자"); break;
default : System.out.println("숫자가 아님"); break;

}

 

◾ 년도와 월을 입력받아서 해당 날짜의 마지막 날짜 출력하기 

case 문을 여러개 중첩할 수 있고, 2월은 윤년과 평년 때문에 좀 더 복잡한 수식이 온다. 

Scanner sc = new Scanner(System.in);
// 년도와 월을 입력 받아 마지막 월의 날짜 출력하기

int y, m, lastDay;

System.out.print("년도 ? ");
y = sc.nextInt();

System.out.print("월 ? ");
m = sc.nextInt();

switch (m) {
case 1: case 3: case 5: case 7: case 8: case 10:
case 12: lastDay = 31; break;
case 4: case 6 : case 9: case 11: lastDay = 30; break;
case 2:
 lastDay = y%4==0 && y%100!=0 || y%400==0? 29 :28;
 break;

 /*
  * if 문으로 풀어도 가능함
  */


default : lastDay = -1; break;

}

if(lastDay != -1) {
 System.out.printf("%d년 %d월의 마지막 날짜는 %d일 입니다.\n", y, m, lastDay);

}else {
 System.out.println("입력 에러입니다.");
}

 

 

 

'개발 공부중 > 📑 코드 복습' 카테고리의 다른 글

* 연산 퀴즈  (0) 2023.02.23
9. for 문  (0) 2023.02.22
7. IF 제어문 + 퀴즈  (0) 2023.02.22
6. 연산자 - 퀴즈  (0) 2023.02.22
5. 연산자  (0) 2023.02.22

블로그의 정보

개발자 미니민의 개발로그

mini_min

활동하기