본문 바로가기

컴퓨터언어/JAVA(자바)

[JAVA강좌] 16강 조건문 - switch문

728x90
반응형

 

 

 

 

 

- switch문도 조건문 중 하나입니다.

- if문처럼 사용할 수도 있겠지만 보통 조건이 범위가 있는 것보다 같다처럼 처리되는 경우에 많이 사용합니다.

- 이번에는 switch문을 사용해서 조건별로 코드를 처리하는 법을 보도록 하겠습니다. 

 

 

 

 

 

 

 

1. switch 기본문법


- switch는 키워드(예약어)를 많이 사용합니다.

- switch, case, break, default입니다. 

- 위의 4개는 변수명으로 작성하면 안되겠죠?

 

 

 

1) switch 기본문법

## 문법

switch(변수 혹은 식) {
	case 값1:
    	변수 혹은 식이 값1과 맞는 경우 코드;
        break;
    case 값2:
    	변수 혹은 식이 값2가 맞는 경우 코드; 
        break;
    default:
    	값1과 2와 모두 맞지 않는 경우 코드;
    	break;
}

 

- 위의 case는 계속 추가될 수 있습니다.

- case는 값이 xxx인 경우라고 보면 좋습니다.

- break는 switch문을 벗어나라는 키워드입니다. 

- break키워드를 쓰지 않으면 아래 코드도 실행이 되는 불편함이 있습니다.

- 그래서 꼭 break;를 쓴다고 보면 됩니다. 
- default는 if문의 else와 같다고 보면 됩니다.  기본 코드처리를 위해 사용하는 키워드입니다. 

- default부분이 없다면 생략 가능합니다. 

 

 

 


 

 

 

2) switch 기본문법 예제

- switch문은 조건이 정확한 값을 갖는 경우 사용하는 것이 좋다고 했습니다. 

- 조건이 ~ 이상이런식을 가능은 하나, 그런 경우는 if문을 더 선호합니다. 

- 그럼 정확한 값을 갖는 경우를 문제로 보도록 하겠습니다. 

사용자에게 순위를 입력받아, 1이면 [금메달],
2이면 [은메달], 3이면 [동메달], 
그외에는 [노메달, 수고하셨습니다.]를 
출력하는 프로그램을 만드시오.

 

- 아래에서는 직접 실습으로 확인해 보겠습니다.

- 패키지(ch11_condition)과 클래스(Ex06_BasicSwitch.java)를 추가해 주세요. 

- 기초적 작업을 모르는 분은 아래 주소를 클릭하고 보고 오세요.

https://ossam5.tistory.com/613

 

[JAVA강좌] 1강 JAVA변수와 자료형

1. 프로젝트 패키지 생성 및 자바 파일 생성 - 앞으로의 강좌에서는 패키지 생성 및 자바 파일 생성하는 것을 보여드리진 않겠습니다. - 지금 잘 확인해 주시기 바랍니다. 1) 프로젝트 패키지 생성

ossam5.tistory.com

 

 

 

## 기본 switch문 실습1 - Ex06_BasicSwitch.java

package ch11_condition;

import java.util.Scanner;

public class Ex06_BasicSwitch {

	public static void main(String[] args) {
		Scanner scan = new Scanner(System.in); //입력을 위한 스캐너 호출
		
		System.out.print("순위입력 : "); //엔터없이 문구 출력
		int rank = scan.nextInt(); //순위를 정수로 입력받는 변수
		
		switch(rank) {
		case 1: //rank가 1과 같다면
			System.out.println("금메달"); //금메달 출력
			break; //rank가 1이면 아래 코드를 무시하고 switch문 벗어나라
		case 2: //rank가 2와 같다면
			System.out.println("은메달"); //은메달 출력
			break; //rank가 2면 아래 코드를 무시하고 switch문 벗어나라
		case 3: //rank가 3과 같다면
			System.out.println("동메달"); //동메달 출력
			break; //rank가 3이면 아래 코드를 무시하고 switch문 벗어나라
		default: //rank가 1, 2, 3이 아니라면
			System.out.println("노메달, 수고하셨습니다."); //문구 출력
			break; //생략해도 크게 문제 없음, 아래 코드가 없기 때문
		}
		
		scan.close(); //스캐너 종료
	}

}

 

- 코드에 주석으로 설명을 써놨으니 보시면 됩니다. 

 

 

 

## 기본 switch문 결과1 - Ex06_BasicSwitch.java

 

 

 

 

 

 

 

 

 

 

 

 

728x90
반응형

 

 

 

 

 

 

 

 

 

 

 

2. switch 여러 case 처리


- 이번에는 여러 case에 실행하는 코드가 같을 때 처리하는 법을 보도록 하겠습니다. 

 

 

 

1) switch 여러 case 문법

## 문법

switch(변수 혹은 식) {
	case 값1: case 값2:  
            변수 혹은 식이 값1 혹은 값2와 맞는 경우 코드;
            break;
        case 값3: case 값4: 
            변수 혹은 식이 값3 혹은 값4와 맞는 경우 코드; 
            break;
        default:
            값1~4와 모두 맞지 않는 경우 코드;
            break;
}

 

- 위의 case는 계속 추가될 수 있습니다.

- 한 경우에 꼭 2개만 적는 게 아니라 여러 개를 한 줄로 쭉 작성해도 됩니다. 

- if문의 조건식에 논리합연산자(||)를 사용하는 것과 같습니다. 

- default부분은 생략가능합니다. 

 

 

 


 

 

 

2) switch 여러 case 문법 예제

-  그럼 여러 경우에 같은 코드를 쓰는 문제를 내보겠습니다. 

사용자에게 주민번호 뒷자리의 첫글자를 입력받아,
1 혹은 3이면 [남자],
2 혹은 4면 [여자], 
그외에는 [1~4사이 숫자로 입력하세요.]를 
출력하는 프로그램을 만드시오.

 

 

 

## 여러 case / switch문 실습1 - Ex07_MultiCase.java

package ch11_condition;

import java.util.Scanner;

public class Ex07_MultiCase {

	public static void main(String[] args) {
		Scanner scan = new Scanner(System.in); //입력을 위한 스캐너 호출
		
		System.out.print("주민번호뒷자리 첫글자입력(1~4) : "); //엔터없이 문구 출력
		int first = scan.nextInt(); //첫글자를 담는 변수
		
		switch(first) {
		case 1: case 3: //first가 1 혹은 3과 같다면
			System.out.println("남자"); //남자 출력
			break; //first가 1 혹은 3이면 아래 코드를 무시하고 switch문 벗어나라
		case 2: case 4: //first가 2 혹은 4와 같다면
			System.out.println("여자"); //여자 출력
			break; //first가 2 혹은 4면 아래 코드를 무시하고 switch문 벗어나라
		default: //first가 1, 2, 3, 4가 아니라면
			System.out.println("1~4사이 숫자로 입력하세요."); //문구 출력
			break; //생략해도 크게 문제 없음, 아래 코드가 없기 때문
		}
		
		scan.close(); //스캐너 종료
	}

}

 

- 코드에 주석으로 설명을 써놨으니 보시면 됩니다. 

 

 

 

## 여러 case / switch문 결과1 - Ex07_MultiCase.java

- 결과가 잘 나오는 것을 확인할 수 있습니다. 

 

 

 

- 그럼 위에 배운 내용을 모두 조합해서 문제를 낼 테니 풀어보고 접은 글을 열어 주세요.

사용자에게 월을 1~12사이로 입력받아, 
1 / 3 / 5 / 7 / 8 / 10 / 12월이면 [마지막 날은 31일입니다.]
4 / 6 / 9 / 11 월이면 [마지막 날은 30일입니다.]
2 월이면 [마지막 날은 28일 혹은 29일입니다.]
나머지는 [1~12사이의 정수로 입력해주세요.]
라고 출력하는 프로그램을 만드시오.

 

 

더보기

## 문제 실습1 - Ex08_Question.java

package ch11_condition;

import java.util.Scanner;

public class Ex08_Question {

	public static void main(String[] args) {
		Scanner scan = new Scanner(System.in); //입력을 위한 스캐너 호출
		
		System.out.print("월 입력(1~12) : "); //엔터없이 문구 출력
		int month = scan.nextInt(); //월을 담는 변수
		
		switch(month) {
		//month가 1 / 3 / 5 / 7 / 8 / 10 / 12와 같다면
		case 1: case 3: case 5: case 7: case 8: case 10: case 12:
			System.out.println("마지막 날은 31일입니다."); //문구 출력
			break; 
		//month가 4 / 6 / 9 / 11과 같다면
		case 4: case 6: case 9: case 11: 
			System.out.println("마지막 날은 30일입니다."); //문구 출력
			break;
		//month가 2와 같다면
		case 2:
			System.out.println("마지막 날은 28일 혹은 29일입니다."); //문구 출력
			break; 
		default: //month가 1~12사이가 아니라면
			System.out.println("1~12사이의 정수로 입력해주세요."); //문구 출력
			break; //생략해도 크게 문제 없음, 아래 코드가 없기 때문
		}
		
		scan.close(); //스캐너 종료

	}

}

- 설명은 주석으로 작성했으니 확인해 보세요.

- 결과도 [Ctrl]+[F11] 눌러서 1~13 사이 숫자를 눌러보면 잘 나오는 것을 확인할 수 있습니다.  

 

 

 

 

 

 

 

 

 

 

 

 

728x90
반응형