이전 열 한걸음에서 if문이라는 조건문을 배웠습니다. 그러면 Java에서는 다른 조건문이 없을까? 이런 의문이 드시지 않나요? 저도 하나만 있다고 하면 조금 이상하다고 생각을 했을 거지만 당연히 하나는 아니겠죠?
조건문에 대해서는 if문을 설명할 때 자세히 설명을 드렸습니다. 그럼 if문과 같은 조건문이 과연 무엇인지 알려 드리겠습니다. 이 글을 끝까지 읽으면 if문과 함께 쓰이는 조건문을 알 수 있고 같은 부분과 다른 부분도 알 수 있습니다.
if문과 같은 조건문은 바로 switch문입니다. switch문을 사용하여 if문과 같이 조건을 주고 조건이 참인 경우에 있는 명령문이나 실행문을 동작을 시킵니다. 이 글을 읽으신다면 switch문의 특징이나 사용 방법 그리고 if문 다른 점은 무엇이 있고 효율적으로 적용하는 방법을 배울 수 있습니다.
switch문
switch문은 switch는 전원 스위치와 같이 현 상황에서 바뀌는 것으로 switch에서 정의한 값이 같은 거를 찾아서 같으면 그 내용으로 실행되고 바뀐다고 생각을 하시면 됩니다.
그럼 위에 내용과 같이 switch문은 조건을 주는 관계 연산자나 논리 연산자를 사용하는 것이 아니라 값을 받아서 그 값으로 분기를 해서 실행을 하게 됩니다.
case에 값을 정의하고 실행될 명령문들을 정의 합니다. 명령문이 끝나는 그 다음 줄에 break를 꼭 넣어줘야 합니다.
마지막으로 if문에 else와 같이 위에 case가 없는 경우에는 default를 선언하고 명령문과 break를 넣어서 마무리를 해야합니다.
switch(값(value)){
case 값:
명령문
break;
case 값:
명령문
break;
default:
명령문
break;
}
위와 같이 사용을 합니다.
※ if-else if- else문에서 else if와 같이 switch문은 case를 원하는 데로 선언을 할 수 있습니다.
switch문 예제1
public static void main(String[] args) {
int a = 5;
switch(a) {
case 5:
System.out.println("a는 5입니다.");
break;
case 10:
System.out.println("a는 10입니다.");
break;
default:
System.out.println("a는 5와 10이 아닙니다.");
break;
}
}
위에 소스처럼 case 명령 끝나면 break문을 넣는 것을 꼭 하셔야 합니다. break문은 switch문을 탈출을 하게 하는 명령문입니다.
그래서 case에 맞는 값이 나오는 10에 들어가고 거기서 출력을 “a는 10입니다.”를 합니다. 그리고 break로 switch문을 탈출을 하게 됩니다.
switch문 예제2
public static void main(String[] args) {
int a = 5;
switch(a) {
case 5:
System.out.println("a는 5입니다.");
case 10:
System.out.println("a는 10입니다.");
break;
default:
System.out.println("a는 5와 10이 아닙니다.");
break;
}
}
위 소스를 보면 결과가 2개가 출력이 되는 것을 확인 할 수 있습니다.
그 이유는 a가 5여서 case 5:에 들어가서 명령문을 실행 하지만 break가 없으면 switch문을 탈출하지 못하고 break를 만나기 전까지 그 아래 있는 명령문들을 다 실행을 하게 됩니다.
※ break문을 빼고 쓰는 일이 없도록 주의 하세요.
switch문 예제3
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner sc = new Scanner(System.in);
System.out.print("월 입력하세요 : ");
int month = sc.nextInt();
switch(month) {
case 1:
case 2:
case 12:
System.out.println("겨울 입니다.");
break;
case 3:
case 4:
case 5:
System.out.println("봄 입니다.");
break;
case 6:
case 7:
case 8:
System.out.println("여름 입니다.");
break;
case 9:
case 10:
case 11:
System.out.println("가을 입니다.");
break;
default:
System.out.println("올바른 입력이 아닙니다.");
break;
}
}
위에 소스를 분석하면 사용자 입력에 의해서 겨울, 봄, 여름, 가을 그리고 “올바른 입력이 아닙니다.”알려주는 프로그램입니다.
여기서 주의 깊게 봐야 하는 것은 case 1:을 정의하고 명령문과 break를 안 쓰고 case 2:, case 12:를 붙인 것을 볼 수 있습니다. 이것은 break가 없으면 break를 만날 때까지 계속 내려가는 원리를 이용해서 만든 것입니다.
위와 같이 선언을 하여
겨울 : 1, 2, 12
봄 : 3, 4, 5
여름 : 6, 7, 8
가을 : 9, 10, 11
그 이외 올바른 입력이 아닙니다. 출력 과 같은 구조를 만들었습니다. 값으로 비교를 한다면 관계 연산자에서 == 비교(같다) 밖에 할 수 없지만 위와 같이 case를 연결하면 값을 묶는 효과를 낼 수 있습니다.