package conditional;
public class SwitchCaseTest1 {
public static void main(String[] args) {
int num1 = 20;
int num2 = 10;
char operator = '/';
switch (operator) {
case '+':
System.out.println(num1 + " + " + num2 + " = " + (num1 + num2));
break;
case '-':
System.out.println(num1 + " - " + num2 + " = " + (num1 - num2));
break;
case '*':
System.out.println(num1 + " * " + num2 + " = " + (num1 * num2));
break;
case '/':
System.out.println(num1 + " / " + num2 + " = " + (num1 / num2));
break;
default:
System.out.println("잘못된 연산자입니다.");
}
}
}
[실행 결과]
20 / 10 = 2
▶ 비교 조건이 수식이 아닌, 숫자, 문자, 혹은 문자열인 경우에 사용한다.
▶ 조건식이 많아지는 경우에는 다량의 else-if문을 사용하는 것 보다,
하나의 switch-case문을 사용하는 것이 가독성이 좋다.
▶ case문에서는 중괄호({})를 사용하지 않는다.
▶ case문에서 실행할 문장이 종료되면 switch-case문을 빠져나갈 수 있도록 case문의 끝에는 반드시 break문을 사용해야 한다.
▶ 비교 값과 일치하는 조건이 없다면 default문이 실행된다.
▶ else if문과 마찬가지로 switch-case문 역시,
조건을 만족하는 경우에는 나머지 조건을 비교하지 않고 조건문을 빠져나온다.
✋ 여기서 잠깐!
'+' 기호를 사용하여 문자열과 값을 연결할 수 있습니다.
추후 '문자열' 파트에서 자세히 다룰 내용입니다 😊
package conditional;
public class SwitchCaseTest2 {
public static void main(String[] args) {
/**
* 전(前) 예제에서 break문을 사용하지 않는 경우
*/
int num1 = 20;
int num2 = 10;
char operator = '-';
switch (operator) {
case '+':
System.out.println(num1 + " + " + num2 + " = " + (num1 + num2));
case '-':
System.out.println(num1 + " - " + num2 + " = " + (num1 - num2));
case '*':
System.out.println(num1 + " * " + num2 + " = " + (num1 * num2));
case '/':
System.out.println(num1 + " / " + num2 + " = " + (num1 / num2));
default:
System.out.println("잘못된 연산자입니다.");
}
}
}
[실행 결과]
20 - 10 = 10
20 * 10 = 200
20 / 10 = 2
잘못된 연산자입니다.
▶ break문을 사용하지 않는 경우, 원치 않은 결과가 출력되지 않을 수 있다.
▶ 문자형 변수 operator에는 '-'가 대입되어 있으므로 첫 번째 case문을 실행하지 않고, 두 번째 case문을 실행한다. 하지만, break문이 존재하지 않기 때문에 이후의 세 번째 case문, 네 번째 case문, 심지어 default문까지 실행이 된다.
package conditional;
public class SwitchCaseTest3 {
public static void main(String[] args) {
/**
* 열두 달 각각의 날짜 수를 출력하는 프로그램
*/
int month = 2;
int day;
switch (month){
case 1: case 3: case 5: case 7: case 8: case 10:
day = 31; break;
case 2:
day = 28; break;
case 4: case 6: case 9: case 11:
day = 30; break;
default:
day = -1;
}
System.out.println(month + "월은 " + day + "일까지 있습니다.");
}
}
[실행 결과]
2월은 28일까지 있습니다.
▶ 하지만, 위 예제와 같이 조건은 다르지만 실행하는 문장이 같은 경우에는 여러 개의 case문을 동시에 나열하고, 마지막 case문에만 break문을 작성한다.