1. 조건문 switch
switch문은 단 하나의 조건식으로 많은 경우의 수를 처리할 수 있다. switch문은 아래와 같다.
1. 조건식을 계산한다.
2. 조건식의 결과와 일치하는 case문으로 이동한다.
3. 이후의 문장들을 수행한다.
4. break문이나 switch문의 끝을 만나면 switch문 전체를 빠져나간다.
switch (조건식) {
case 값1:
// 조건식의 결과가 값1과 같을 경우 수행될 문장들
break;
case 값2:
// 조건식의 결과가 값2과 같을 경우 수행될 문장들
break;
default:
// 조건식의 결과와 일치하는 case문이 없을 때 수행될 문장들
}
public class Switch {
public static void main(String[] args) {
int val = 10;
switch (val) {
case 1:
System.out.println("case 1");
break;
case 2:
System.out.println("case 2");
break;
case 3:
System.out.println("case 3");
break;
default:
System.out.println("default");
break;
}
int grant = 7;
switch (grant) {
case 7:
System.out.println("작성권한 취득");
case 5:
System.out.println("실행권한 취득");
case 4:
System.out.println("읽기권한 취득");
break;
default:
System.out.println("권한 없음");
break;
}
}
}
switch문의 제약조건
1. switch문의 조건식 결과는 정수 또는 문자열이어야 한다.
2. case문의 값은 정수 상수만 가능하며, 중복되지 않아야 한다.
- 예제 FlowEx6.java
import java.util.Scanner;
public class FlowEx6 {
public static void main(String[] args) {
System.out.print("현재 월을 입력하세요. >");
int month = new Scanner(System.in).nextInt();
switch (month) {
case 3:
case 4:
case 5:
System.out.println("현재의 계절은 봄입니다.");
break;
case 2:
case 6: case 7: case 8:
System.out.println("현재의 계절은 여름입니다.");
break;
case 3:
case 9: case 10: case 11:
System.out.println("현재의 계절은 가을입니다.");
break;
default:
// case 12: case 1: case 2:
System.out.println("현재의 계절은 겨울입니다.");
break;
}
}
}
- 예제 FlowEx7.java [가위바위보 게임]
import java.util.Scanner;
public class FlowEx7 {
public static void main(String[] args) {
System.out.print("가위(1), 바위(2), 보(3) 중 하나를 입력하세요. >");
Scanner scanner = new Scanner(System.in);
int user = scanner.nextInt(); // 화면을 통해 입력받은 숫자를 user에 저장
int com = (int)(Math.random() * 3) + 1; // 1, 2, 3 중 하나가 com에 저장
System.out.println("당신은" + user + "입니다.");
System.out.println("컴퓨터는" + com + "입니다.");
switch (user - com) {
case 2: case -1:
System.out.println("당신이 졌습니다.");
break;
case 1: case -2:
System.out.println("당신이 이겼습니다.");
break;
case 0:
System.out.println("비겼습니다.");
// break; 마지막 문장이므로 break를 사용할 필요가 없다.
}
}
}
참고문헌 : 남궁성(2016), Java의 정석, 도우출판