foxpacking

Programming Lessons

Java 언어 Korean

Java 총 정리[12. 조건문 switch문]

조건문 - 2

이전 열 한걸음에서 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;
	}
}        
    
switch문 사진 1

위에 소스처럼 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;
	}
}        
    
switch문 사진 2

위 소스를 보면 결과가 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;
	}
}
    
switch문 사진3

위에 소스를 분석하면 사용자 입력에 의해서 겨울, 봄, 여름, 가을 그리고 “올바른 입력이 아닙니다.”알려주는 프로그램입니다. 

여기서 주의 깊게 봐야 하는  것은 case 1:을 정의하고 명령문과 break를 안 쓰고 case 2:, case 12:를 붙인 것을 볼 수 있습니다. 이것은 break가 없으면 break를 만날 때까지 계속 내려가는 원리를 이용해서 만든 것입니다.

위와 같이 선언을 하여

겨울 : 1, 2, 12

봄 : 3, 4, 5

여름 : 6, 7, 8

가을 : 9, 10, 11

그 이외 올바른 입력이 아닙니다. 출력 과 같은 구조를 만들었습니다. 값으로 비교를 한다면 관계 연산자에서 == 비교(같다) 밖에 할 수 없지만 위와 같이 case를 연결하면 값을 묶는 효과를 낼 수 있습니다.

※일반적으로 break를 꼭 사용해야 합니다.

정리

switch문 사진 4

Dolphin

About Author

Leave a comment

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다

You may also like

Korean Programming 기초

IT 개발자 VS 프로축구선수 비교?

IT 개발자와 프로축구선수의 같은 점과 다른 점? 프로그래밍 공부를 하시면서 개발자로 취업을 하려고 하는데 과연 취업을 할 수 있을까? IT
Korean 클라우드

AWS 로그인 불가능, AWS고객 센터 이메일 문의 결과는?

AWS 고객센터 이메일 문의 솔직후기 AWS를 사용하기 위해 로그인을 하는 경우 이메일로 코드 번호를 보내지만 이메일로 받을 수 없는 상황이거나