switch 문도 if 문과 동일하게 조건문임!!
다만, if문과 차이점 이라면?
> if문은 조건식을 자유롭게 기술 가능!!
> switch문은 동등비교로 밖에 수행되지 않음!!
> 실행할 구문만 실행하고 자동으로 빠져나오지 못함!! (직접 break; 문 작성해야됨)
[표현법]
switch(이제부터 동등비교할 대상){
case 값1 : 실행코드1; break;
case 값2 : 실행코드2; break;
case 값3 : 실행코드3; break;
...
[default : 위의 값들과 모두 일치하지 않을 경우 실행할 코드;] => if문에서 else 와 같은 존재, 생략가능
}
예제)
정수를 입력받아 => "정수"
1일 경우 "빨간색 입니다." => case 1 : 빨간색입니다; break;
2일 경우 "파란색 입니다." => case 2 : 파란색입니다; break;
3일 경우 "초록색 입니다." => case 3 : 초록색입니다; break;
잘못 입력했을 경우 "잘못 입력하였습니다."
if 문으로 구현한다면 ???
Scanner sc = new Scanner(System.in);
System.out.print("정수 입력(1 ~3) : ");
int num = sc.nextInt();
if(num ==1) {
System.out.println("빨간색 입니다.");
}else if(num == 2) {
System.out.println("파란색 입니다.");
}else if(num == 3) {
System.out.println("초록색 입니다.");
}else {
System.out.println("잘못입력하셨습니다.");
}
switch으로 바꿔보자 ~~
Scanner sc = new Scanner(System.in);
System.out.print("정수 입력(1 ~3) : ");
int num = sc.nextInt();
switch(num) {
case 1 :
System.out.println("빨간색 입니다.");
break;
case 2 :
System.out.println("파란색 입니다.");
break;
case 3 :
System.out.println("초록색 입니다.");
break;
default :
System.out.println("잘못입력하셨습니다.");
}
sc.close();
예제) 과일을 입력하면 그에 맞는 가격이 출력되게 해보자 !!
Scanner sc = new Scanner(System.in);
System.out.print("구매하고자 하는 과일(사과, 바나나, 복숭아) 입력 : ");
String fruit = sc.nextLine();
int price = 0; // String str = ""; 초기화
switch(fruit) {
case "사과" :
price = 1000;
break;
case "바나나" :
price = 2000;
break;
case "복숭아" :
price = 3000;
break;
default :
System.out.println("해당 과일은 품절입니다.");
sc.close();
return;
}
// xx의 가격은 xxx원 입니다.
System.out.println(fruit + "의 가격은 " + price + "원 입니다.");
sc.close();
예제)
// 등급별 권한 //
1. 관리권한, 글쓰기권한, 읽기권한 //
2. 글쓰기권한, 읽기권한 //
3. 읽기권한
Scanner sc = new Scanner(System.in);
System.out.print("등급(정수) : ");
int level = sc.nextInt();
switch(level) {
case 1 :
System.out.println("관리권한");
case 2 :
System.out.println("글쓰기권한");
case 3:
System.out.println("읽기권한");
break;
}
sc.close();
예제)
월을 입력 받아 해당 월의 마지막 날짜 출력
// 1, 3, 5, 7, 8, 10, 12 => 31일
// 4, 6, 9, 11 => 30일
// 2 => 28일 또는 29일
Scanner sc = new Scanner(System.in);
System.out.print("1월 ~ 12월까지중 하나를 입력(정수로) : ");
int month = sc.nextInt();
switch(month) {
case 1 :
case 3 :
case 5 :
case 7 :
case 8 :
case 10 :
case 12 : System.out.println("입력하신 월은 31일 까지입니다."); break;
case 4 :
case 6 :
case 11 : System.out.println("입력하신 월은 30일 까지입니다."); break;
case 2 : System.out.println("입력하신 월은 28일 또는 29일 까지입니다."); break;
default : System.out.println("반드시 1~12월 까지를 입력헤야합니다.");
}
sc.close();