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