본문 바로가기
개발/JAVA

자바 - 제어문 switch문

by chansungs 2020. 6. 14.
728x90
반응형

안녕하세요~ 자바 프로그래밍에서 제어문 switch문에 대해 이야기해보겠습니다. switch문은 조건 분기문으로, if-else문과 비슷하지만, 여러 개의 조건을 한번에 처리할 수 있습니다. switch문은 변수나 상수의 값에 따라서 실행할 코드 블록을 선택합니다. 이를 통해 코드의 가독성을 높일 수 있고, 중첩된 if-else문의 복잡도를 줄일 수 있습니다. switch문을 사용하여 자바 프로그래밍을 보다 효율적으로 작성해보세요!

 

switch문

// switch 문
// 분기를 위해서 사용이 되는 java의 분기문법
// - if문과는 다르게 조건식이 아닌 정수 상수의 값을 기준으로 분기

// 사용법
/*
switch( 정수형 변수 / 정수의 값을 반환하는 식 ) {
	case 상수값1 :
		상수값1에 해당되는 값이 들어온 경우 실행문;
		break;
	case 상수값2 :
		상수값2에 해당되는 값이 들어온 경우 실행문;
		break;
	...
	default :
		모든 상수값에 해당되지 않는 경우 실행문;
		break;
}
*/

int menu = 1;

// switch 구문의 실행과정
// - 입력된 정수의 값을 내부에 정의된 각 case 상수와 비교
// - 위에서부터 아래로 순차적으로 진행
// - 특정 case 의 상수와 동일한 값인 경우 해당 case 구문 내부의 실행문이 실행
// - break 키워드를 만날때 까지 실행
switch( menu ) {
	case 1:	// if( menu == 1 )
		System.out.println("짜장면을 주문했습니다.");
		break;
	case 2:	// else if( menu == 2 )
		System.out.println("짬뽕을 주문했습니다.");
		break;
	case 3:	// else if( menu == 3 )
		System.out.println("볶음밥을 주문했습니다.");
		break;
	default :
		System.out.println("잘못된 메뉴번호입니다.");		
}

키보드 입력 switch 사용하여 출력하기

import java.util.Scanner;
public class Control_Statement_SWITCH_02 {
	public static void main(String[] args) {
		Scanner in = new Scanner(System.in);
		
		// 사용자에게 월에 해당되는 정보를 입력받으세요.
		// 입력받은 월의 일수를 출력하세요.
		// EX) 1 ~ 12 사이의 정수를 입력하세요 : 5
		// 5월 달은 '31'일 까지 있습니다.
		
		// 1. 입력
		// - 변수 선언
		int month;
		// - 입력 과정 수행
		System.out.print("1 ~ 12 사이의 정수를 입력하세요 : ");
		month = in.nextInt();
		
		// 2. 처리
		// - 변수 선언
		int day;
		// - 처리 과정 수행
		switch( month ) {
			case 1:	case 3:	case 5:	case 7:	case 8:	case 10: case 12:
				day = 31;	break;
			case 2:
				day = 28;	break;			
			case 4:	case 6: case 9: case 11:
				day = 30;	break;
			default:
				day = -1;
		}
		
		// 3. 출력
		if( day != -1 )
			System.out.printf("%d월 달은 '%d'일 까지 있습니다.\n", month, day);
		else
			System.out.printf("1 ~ 12 사이의 값을 입력하세요 (%d)\n", month);


	}

}

switch 문 예제(문제)

import java.util.Scanner;
public class Control_Statement_SWITCH_03 {
	public static void main(String[] args) {
		Scanner in = new Scanner(System.in);
		
		// 사용자로부터 3과목의 성적을 입력받아
		// 총점, 평균, 등급을 출력하세요.
		// (등급은 A ~ F)
		
		// 1. 입력
		// - 변수 선언
		int s1, s2, s3;
		// - 입력과정 수행
		System.out.print("국어 성적을 입력하세요 : ");
		s1 = in.nextInt();
		System.out.print("영어 성적을 입력하세요 : ");
		s2 = in.nextInt();
		System.out.print("수학 성적을 입력하세요 : ");
		s3 = in.nextInt();
		
		// 2. 처리
		// - 변수 선언
		int tot;
		double avg;
		char grade;
		// - 처리 과정 수행
		// 총점
		tot = s1 + s2 + s3;
		// 평균
		avg = tot / 3.0;
		
		// 등급
		// 아래의 if문을 switch 구문으로 변경하여 처리하세요.
		// 삼항연산자를 쓴건 101~109점이 들어왔을때 / 10을 해도 10이 출력되기때문에
		switch( avg < 0 || avg > 100 ? -1 : (int)avg / 10 ) {
			case 10:
			case 9:		grade = 'A'; break;
			case 8:		grade = 'B'; break;
			case 7:		grade = 'C'; break;
			case 6:		grade = 'D'; break;
			case 5: case 4: case 3: case 2: case 1: case 0:		
						grade = 'F'; break;
			default:	grade = '?';
		}
		
		// 3. 출력
		System.out.printf("입력된 성적의 총점은 %d 점, 평균은 %.2f 점 입니다.\n", tot, avg);
		
		if( grade != '?' )
			System.out.printf("입력된 성적의 등급은 '%c' 입니다.\n", grade);
		else
			System.out.println("입력된 성적에 오류가 있습니다.");

	}

}
728x90
반응형