if문은 조건이 많아질수록 else-if문을 계속 추가해야 하므로 조건식이 많아져서 복잡해지고, 여러 개의 조건식을 계산해야 하므로 처리시간도 많이 걸린다.
switch문은 단 하나의 조건으로 많은 경우의 수를 처리할 수 있고, 표현도 간결하므로 알아보기 쉽다.
switch문의 연산방식
1. 조건식을 계산한다.
2. 조건식의 결과와 일치하는 case문으로 이동한다.
3. 이후의 문장들을 수행한다.
4. break문이나 switch문의 끝을 만나면 switch문 전체를 빠져나간다.
switch문의 제약조건
1. switch문의 조건식 결과는 정수 또는 문자열이어야 한다.
2. case문의 값은 정수 상수만 가능하며, 중복되지 않아야 한다.
public class FlowEx07 {
public static void main(String[] args) {
System.out.print("가위(1),바위(2),보(3) 중 하나를 입력하세요.>");
Scanner scanner = new Scanner(System.in);
int user = scanner.nextInt();
int com = (int)(Math.random() * 3) +1;
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;
}
scanner.close();
}//main의 끝
}
실행결과1
가위(1),바위(2),보(3) 중 하나를 입력하세요.>1
당신은 1입니다.
컴은 1입니다.
비겼습니다.
실행결과2
가위(1),바위(2),보(3) 중 하나를 입력하세요.>2
당신은 2입니다.
컴은 1입니다.
당신이 이겼습니다.
만약 if문으로 하면 중첩if문 3개를 사용했어야 했겠지만, switch조건문을 사용하면 switch한개로 처리가 된다.
switch문의 중첩
if문처럼 switch문도 중첩이 가능하다.
public class FlowEx11 {
public static void main(String[] args) {
System.out.print("당신의 주민번호를 입력하세요. (011231-1111222)>");
Scanner scanner = new Scanner(System.in);
String regNo = scanner.nextLine();
char gender = regNo.charAt(7);
switch(gender) {
case '1': case '3':
switch(gender) {
case '1':
System.out.println("당신은 2000년 이전에 출생한 남자입니다.");
break;
case '3':
System.out.println("당신은 2000년 이후에 출생한 남자입니다.");
}
break;
case '2': case '4':
switch(gender) {
case '2':
System.out.println("당신은 2000년 이전에출생한 여자입니다.");
break;
case '4':
System.out.println("당신은 2000년 이후에 출생한 여자입니다.");
break;
}
break;
default:
System.out.println("유효하지 않은 주민등록번호입니다.");
}
scanner.close();
}//main의 끝
}
방법은 if문이랑 큰 차이가 없다.
만약 이걸 if문으로 적으려고 했으면 보기도 힘들어질 것이다.
'JAVA 04강 조건문과 반복문 > 조건문 if, switch' 카테고리의 다른 글
if, if else조건문 (0) | 2021.07.14 |
---|