본문 바로가기
Java/정리

7회차_제어문(switch문_return/break 차이)

by 콧등치기국수 2021. 4. 19.

if문과 switch문에 대한 강의였는데 if문은 강의내용만큼은 알고 있어서 정리하지 않고 swtich에서 

기억했으면 하는 부분만 정리를 했다.

 

1. swtich문

1) switch문 괄호 안에는 정수, 문자, 문자열만 기입 가능하다.

 

swtich문 예시

 

 

2. switch문 예

		//1~12월까지 입력받아 해당하는 달의 마지막 날짜를 출력하세요
		
		Scanner sc = new Scanner(System.in);
		System.out.print("1~12월 까지중 하나를 입력하세요 : ");
		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 4:
		case 6:
		case 9:
		case 11:
			System.out.println("입력하신 월은 31일 까지입니다.");
			break;
		case 2:
			System.out.println("입력하신 월은 28일 혹은 28일까지입니다.");
			break;
		default:
			System.out.println("반드시 1~12월 중 하나를 입력해야 합니다");
			break;
			//return;
		}

1) 같은 출력문 나오는 달끼리 묶음

- 1,3,5,7,8,10,12 

- 4,6,9,11

- 2

 

2) switch는 break없으면 멈추지 않고 계속 밑으로 가는 것 이용

 

 

3. break, return의 차이

* break

가까이 있는 Loop를 종료시킨다. 

case문 내에서 break를 만나면 case문을 빠져나오게 된다.

 

하지만 만약 case문 내에 break가 없다면 if문과는 달리 아래에 break를 만날 때까지 case조건들을 모두 실행하게 된다.

 

아래 예시에서 [ op = + ]인 경우를 생각해보면

case '+' 도 실행하고 

case '-' 도 실행하고

case '*' 도 실행한 후에 break;를 만나 case문이 종료된다.

switch(op) {
		case '+' :
			result = num1 + num2;
		case '-' :
			result = num1 - num2;
		case '*' :
			result = num1 - num2;
			break;
		case '/' :
			if( num2 != 0) {
				result = num1 / num2;
			}else {
				System.out.println("0으로 나눌 수 없습니다.");	
			}
		default: 
			System.out.println("입력하신 연산은 없습니다. 프로그램을 종료합니다.");
			return; //메소드 종료시켜서 아래부분 실행하지 않음
		}

 

* return

: 메소드를 종료시킨다.

즉 아래 예시에서 case내 조건을 하나도 만족시키지 못해 default를 실행하게 되면 method2( )를 종료시키므로,

default 아래에 있는 System.out.println("수행 결과 : " + num1 + " " + ~~) 은 실행하지 않는다.

package practice.conditional;

import java.util.Scanner;

public class ConditionalPractice {
    public void method2() {
		//문제 2 두 정수와 연산자 입력받아 연산 결과 출력
		Scanner sc = new Scanner(System.in);
		System.out.print("첫 번째 정수 입력 : ");
		int num1 = sc.nextInt();
		System.out.print("두 번째 정수 입력 : ");
		int num2 = sc.nextInt();
		System.out.print("연산 기호 입력 : ");
		char op = sc.next().charAt(0);
		
		int result = 0;
		switch(op) {
		case '+' :
			result = num1 + num2;
			break;
		case '-' :
			result = num1 - num2;
			break;
		case '*' :
			result = num1 * num2;
			break;
		case '/' :
			if( num2 != 0) {
				result = num1 / num2;
			}else {
				System.out.println("0으로 나눌 수 없습니다.");	
			}break;	
		case '%' :
			result = num1 % num2;
			break;
		default: 
			System.out.println("입력하신 연산은 없습니다. 프로그램을 종료합니다.");
			return; //메소드 종료시켜서 아래부분 실행하지 않음
		}
		System.out.println("수행 결과 : " + num1 + " " + op + " " + num2+ " = " + result);
		sc.close();
	}
}

 

 

 

'Java > 정리' 카테고리의 다른 글

[Java] 메모리구조 & 참조변수  (0) 2021.05.03
9회차_반복문(do ~ while문)  (0) 2021.04.19
[Java] 연산자  (0) 2021.04.12
3회차_상수 & 데이터 오버플로우 & 형변환  (0) 2021.04.10
2회차_출력메소드(printf)  (0) 2021.04.10