JAVA 기본 문법 정리 - 4. 조건문과 반복문 ①

    반응형
    SMALL
    반응형

    조건문 if, switch

    if문

    if문은 가장 기본적인 조건문이며,

    '만일(if) 조건식이 참(true)이면 괄호{}안의 문장들을 수행하라'라는 의미를 가진다.

    if (조건식) {
    	//조건식이 참(true)일 때 수행될 문장들을 적는다.
    }
    
    
    if (score > 60) {
    	System.out.println("합격입니다.")
     }

    if-else문

    if문의 변형인 if-else문의 구조는 if문에 'else블럭'이 추가된 구조이다. 

    조건식의 결과가 참이 아닌 거짓일 때 else블럭의 문장을 수행하라는 의미를 가진다.

    if (조건식) {
    	// 조건식이 참(0이 아닌 값)일 때 수행될 문장들을 적는다.
    } else {
    	// 조건식이 거짓(0)일 때 수행될 문장들을 적는다.
    }

     

    if(input==0) {
    	System.out.println("0입니다.");
     }
     
     if(input!=0) {
     	System.out.println("0이 아닙니다.");
     }
     
     // 위의 if문을 if-else문으로 바꾸면 다음과 같다.
     if(input==0) {
     	System.out.println("0입니다.");
     } else {
     	System.out.println("0이 아닙니다.");
     }

     

    if-else if문

    처리해야 할 경우의 수가 셋 이상인 경우에 'if-else if'문을 사용한다.

    if (조건식1) {
    	//조건식1의 연산결과가 참일 때 수행될 문장들을 적는다.
    } else if (조건식2) {
    	//조건식2의 연산결과가 참일 때 수행될 문장들을 적는다.
    } else if (조건식3) { //여러개의 else if를 사용할 수 있다.
    	//조건식3의 연산결과가 참일 때 수행될 문장들을 적는다.
    } else { //마지막에는 보통 else블럭으로 끝나며, else블럭은 생략가능하다.
    	//위의 어느 조건식도 만족하지 않을 때 수행될 문장들을 적는다.
    }

     

    중첩 if문

    if문의 블럭 내에 또 다른 if문을 포함시키는 것이 가능한데 이것을 중첩 if문이라고 하며,

    중첩의 횟수에는 거의 제한이 없다.

    if (조건식1) {
    	//조건식1의 연산결고가 true일 때 수행될 문장들을 적는다.
        if (조건식2) {
        	//조건식1, 조건식2 모두 true일 때 수행될 문장들을 적는다.
        } else {
        	//조건식1이 true이고, 조건식2가 false일 때 수행되는 문장들을 적는다.
        }
    } else {
    	//조건식1이 false일 때 수행되는 문장들을 적는다.
    }

     

    switch문

    먼저, switch문의 기본구조는 다음과 같다.

    switch (조건식) {
    	case 값1 :
        	//조건식의 결과가 값1과 같을 경우 수행될 문장들
            //...
            break;
        case 값2 :
        	//조건식의 결과가 값2와 같을 경우 수행될 문장들
        	//...
            break;
    	//...
        default :
        	//조건식의 결과와 일치하는 case문이 없을 때 수행될 문장들
            //...
    }

    if문은 조건식의 결과가 참과 거짓, 두 가지 밖에 없기 때문에 경우의 수가 많아질수록 else-if를 계속 추가해야하므로 조건식이 많아져서 복잡해지고, 여러 개의 조건식을 계산해야하므로 처리시간도 많이 걸린다.

     

    이러한 if문과 달리 switch문은 단 하나의 조건식으로 많은 경우의 수를 처리할 수 있고, 표현도 간결하여 알아보기 쉽다. 그래서 처리할 경우의 수가 많은 경우 if문보다 switch문으로 작성하는 것이 좋다.

     

    다만 switch문은 제약조건이 있기 때문에, 경우의 수가 많아도 어쩔 수 없이 if문으로 작성해야 하는 경우가 있다.

    **switch문은 항상 if문으로 변환이 가능하지만, if문은 switch문으로 작성할 수 없는 경우가 많다.

    switch문의 제약조건
    1. switch문의 조건식 결과는 정수 또는 문자열이어야 한다.
    2. case문의 값은 정수 상수만 가능하며, 중복되지 않아야 한다.

     

    입력

    import java.util.*;
    
    class SwitEx1 {
    	public static void main(String[] args) {
        	int month = 0;
            
            System.out.print("현재 월을 입력하세요.>");
            
            Scanner scanner = New scanner(System.in);
            String tmp = scanner.nextLine(); //화면을 통해 입력받은 내용을 tmp에 저장
            month = Integer.parseInt(tmp); //입력받은 문자열(tmp)을 숫자로 변환
            
            switch(month) {
                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.prinln("현재의 계절은 가을입니다.");
                    break;
                default:
                case 12: case 1: case 2:
                	System.out.println("현재의 계절은 겨울입니다.");
            }
        }
    }

    출력

    현재 월을 입력하세요.>3
    현재의 계절은 봄입니다.

    ** case문은 한 줄에 하나씩 쓰던, 한 줄에 붙여서 쓰던 상관없다

    case 3:                                 case 3: case 4: case 5:

    case 4:

    case 5:

     

     

     

     

    참고자료 : 자바의 정석 3rd Edition

    반응형
    LIST

    댓글