본문 바로가기
Back/JAVA

조건문 - Switch~Case문

by 시월해 2021. 2. 26.

switch~case문 - 조건문
- 식(정수 또는 char)을 사용해서 다중분기하는 명령문.
- jdk 1.7 버전부터는 식에 String 사용이 가능함.
   형식) 
         switch(식 또는 값) {
             case 값1 : 
                         값이 1일때 실행문;
                         break; // switch~case 블럭 탈출
             case 값2 : 
                         값이 2일때 실행문;
                         break;
             case 값3 : 
                         값이 3일때 실행문;
                         break;
             default :   // 생략도 가능함.
                         값1 ~ 값3 이외의 값이 들어온 경우 실행문;


기본예제)

	public static void main(String[] args) {
		
		Scanner sc = new Scanner(System.in);
		
		System.out.println("1~3 사이의 숫자 중에서 하나를 선택");
		
		int su = sc.nextInt();
		
		switch (su) {
		case 1 :
			    System.out.println("입력받은 숫자는 1입니다.");
			    break;
		case 2 :
			    System.out.println("입력받은 숫자는 2입니다.");
			    break;
		case 3 :
			    System.out.println("입력받은 숫자는 2입니다.");
			    break;
		default :
			    System.out.println("1 ~ 3 이외의 숫자입니다.");
		}
		
		sc.close();

	}

소스
결과


예제1) 달(월)을 사용자로부터 입력 받아 해당 월에 따른 일 수 출력

	public static void main(String[] args) {
		
		Scanner sc = new Scanner(System.in);
		
		System.out.print("달(월)을 입력하세요. : ");
		int month = sc.nextInt();
		
		switch(month) {
			case 1 :
			case 3 :
			case 5 :
			case 7 :
			case 8 :
			case 10 :
			case 12 :
				System.out.println("마지막 날은 31일입니다.");
				break;
			case 2 :
				System.out.println("마지막날은 28일입니다.");
				break;
			case 4 :
			case 6 :
			case 9 :
			case 11 :
				System.out.println("마지막 날은 30일입니다.");
				break;		
		}
		
		sc.close();

	}

결과


예제2) 문자열로 직급을 입력 받아 해당 직급의 급여를 출력하는 프로그램

	public static void main(String[] args) {
		
		Scanner sc = new Scanner(System.in);
		
		System.out.print("직급을 입력하세요. : ");
		String position = sc.next();
		
		switch (position) {
			case "사장":
				System.out.println("사장의 급여는 1,000만원입니다.");
				break;
			case "전무":
				System.out.println("전무의 급여는 750만원입니다.");
				break;
			case "부장":
				System.out.println("부장의 급여는 600만원입니다.");
				break;
			case "차장":
				System.out.println("차장의 급여는 450만원입니다.");
				break;
			case "과장":
				System.out.println("과장의 급여는 350만원입니다.");
				break;
			case "대리":
				System.out.println("대리의 급여는 300만원입니다.");
				break;
			case "사원":
				System.out.println("사원의 급여는 200만원입니다.");
				break;
			default:
				System.out.println("존재하지 않는 직급입니다.");
				break;
		}
		
		sc.close();

	}

 

결과


제3) 키보드로 이름, 국어 점수, 영어 점수, 수학 점수, 자바 점수를 입력 받은 뒤 총점, 평균, 학점을 출력하는 프로그램

 

	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		
		// 1. 키보드로 이름, 국어점수, 영어점수, 수학점수, 자바점수 입력 받자.
		System.out.print("이름을 입력하세요 : ");
		String name = sc.nextLine();
		
		System.out.print("국어 점수를 입력하세요 : ");
		int kor = sc.nextInt();
		
		System.out.print("영어 점수를 입력하세요 : ");
		int eng = sc.nextInt();
		
		System.out.print("수학 점수를 입력하세요 : ");
		int mat = sc.nextInt();
		
		System.out.print("자바 점수를 입력하세요 : ");
		int jav = sc.nextInt();
		

		// 2. 총점을 구하자.
		int sum = kor + eng + mat + jav;
		
		// 3. 평균을 구하자.
		float avg = sum / 4.0f;
		
		// 4. 학점을 구하자.
		String grade; // 학점을 저장할 변수
		
		switch ((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;
		default :
			grade = "F";
			break;
		}
		
		// 5. 성적을 화면에 출력해 보자.
		System.out.println("이름 : " + name);
		System.out.println("국어 : " + kor + "점");
		System.out.println("영어 : " + eng + "점");
		System.out.println("수학 : " + mat + "점");
		System.out.println("자바 : " + jav + "점");
		System.out.println("총점 : " + sum + "점");
		System.out.printf("평균 : %.2f점\n", avg);
		System.out.println("학점 : " + grade + "학점");
		
		sc.close();

	}

결과