변수의 값에 따라 다른 동작을 수행하는 프로그램을 작성해야 한다고 가정해보자. 예를 들어, 메뉴에서 동작을 선택한다. 아래의 코드와 같이 여러 분기가 있는 조건문을 사용할 수 있다.
int action = ...; // a certain value from 1 to 4
if (action == 1) {
System.out.println("Starting a new game...");
} else if (action == 2) {
System.out.println("Loading a saved game");
} else if (action == 3) {
System.out.println("Displaying help...");
} else if (action == 4) {
System.out.println("Exiting...");
} else {
System.out.println("Unsuitable action, please, try again");
}
이 코드로 작업 처리가 가능하나, 조건문에 분기가 많으면 가독성에 좋지 못하다.
이럴 경우에는 swich
문을 활용하여 작업을 처리할 수 있다.
switch
, case
, and default
swich
문은 단일 변수의 값을 기준으로 여러 케이스 중에서 선택하는 방법을 제공한다. 변수는 정수(integer number), 문자(character), 문자열(string), 열거형(enumeration)일 수 있다.
switch
statementswitch (variable) {
case value1:
// do something here
break;
case value2:
// do something here
break;
//... other cases
case valueN:
// do something here
break;
default:
// do something by default
break; // it can be omitted
}
swich
문을 사용하기 위해선 swich
와 case
키워드가 필요하다. break
및 default
키워드는 선택사항이다.
break
: 하나의 케이스가 아닌 swich
문 전체를 실행 중지.default
: 변수 값과 일치하는 case
가 없을 경우 실행.swich
문을 사용하면 이전 예제는 다음과 같다.
switch (action) {
case 1:
System.out.println("Starting a new game...");
break;
case 2:
System.out.println("Loading a saved game");
break;
case 3:
System.out.println("Displaying help...");
break;
case 4:
System.out.println("Exiting...");
break;
default:
System.out.println("Unsuitable action, please, try again");
}
다음 코드는 정수의 이름이나 기본 텍스트를 출력한다. 이 switch
문에는 세 개의 기본 케이스와 하나의 기본 케이스가 있다.
int val = ...;
switch (val) {
case 0:
System.out.println("zero");
break;
case 1:
System.out.println("one");
break;
case 2:
System.out.println("two");
break;
default:
System.out.println("The value is less than zero or greater than two");
}
val
의 값이 0일 경우, case 0
구문이 실행됨.val
의 값이 10일 경우, default
구문이 실행됨.case
문에서 break
키워드를 잊으면 컴파일러는 오류로 간주하지 않음case1
에 break
키워드가 없고 val
의 값이 1을 할당하는 프로그램은 다음과 같다.
int val = 1;
switch (val) {
case 0:
System.out.println("zero");
break;
case 1:
System.out.println("one");
case 2:
System.out.println("two");
break;
default:
System.out.println("The value is less than zero or greater than two");
}
# 결과
one
two
break
키워드가 없을 경우 해당하는 case
문을 찾아도 switch
가 종료되지 않고 break
를 만날 때 까지 다음 case
문을 실행함.