Cracking Code

[Java] if, if ~ else, if ~ else if ~ else, switch 문 본문

Java/Java language

[Java] if, if ~ else, if ~ else if ~ else, switch 문

CrackCo 2020. 7. 29. 19:30
제어문은 주어진 조건 결과에 따라 프로그램의 순차적 흐름을 제어하는 문장으로
if 문, switch 문이 이에 해당합니다.

if 문

조건식의 결과가 참이면 주어진 명령을 실행하고 거짓이면 실행하지 않습니다.

if (조건식) {
    조건식의 결과가 true이면 실행하는 명령문1;
}

명령문2;

조건식의 결과가 true를 반환하면 명령문1을 수행하고 명령문2를 수행합니다.

하지만 false를 반환한다면 명령문1은 수행하지 않고 명령문2를 수행합니다.

 

E.g.

// Case #1
public class Main {
    public static void main(String[] args) {
        int num = 90;
        if (num >= 80) {
            System.out.println("num은 80 이상입니다."); // 명령1
        }
        
        System.out.println("프로그램 종료"); // 명령2
    }
}


num은 80 이상입니다.
프로그램 종료


// Case #2
public class Main {
    public static void main(String[] args) {
        int num = 90;
        if (num < 80) {
            System.out.println("num은 80 이상입니다."); // 명령1
        }
        
        System.out.println("프로그램 종료"); // 명령2
    }
}


프로그램 종료

Case #1

int 형으로 선언하고 초기화된 num의 값은 90이고 if 문 안의 조건문은 num이 80 이상인지 검사하고 있습니다.

90은 80 이상의 값을 갖고 있기 때문에 if 문 안의 명령1 이 수행되고 if 문을 빠져나와 명령2 가 수행됩니다.

Case #2

if 문 안의 조건문은 num이 80보다 작은지 검사하고 있습니다.

num의 값은 90이므로 num은 80보다 작지 않습니다.

그러므로 명령1 은 수행되지 않고 if 문을 빠져나와 명령2 만 수행됩니다.

 

if ~ else 문

조건식의 결과에 따라서 실행되는 문장이 서로 다른 경우 사용합니다.

if (조건식) {
    조건식이 true이면 수행되는 명령문1;
} else {
    조건식이 false이면 수행되는 명령문2;
}

명령문3;

조건식의 결과가 true를 반환하면 명령문1을 수행하고 명령문2는 수행하지 않으며 명령문3을 수행합니다.

하지만 false를 반환한다면 명령문1은 수행하지 않고 명령문2를 수행하며 명령문3을 수행합니다.

 

E.g.

// Case #1
public class Main {
    public static void main(String[] args) {
        int num = 90;
        if (num >= 80) {
            System.out.println("num은 80 이상입니다."); // 명령1
        } else {
            System.out.println("num은 80 이상이 아닙니다."); // 명령2
        }
        
        System.out.println("프로그램 종료"); // 명령3
    }
}


num은 80 이상입니다.
프로그램 종료


// Case #2
public class Main {
    public static void main(String[] args) {
        int num = 90;
        if (num < 80) {
            System.out.println("num은 80 이상입니다."); // 명령1
        } else {
            System.out.println("num은 80 이상이 아닙니다."); // 명령2
        }
        
        System.out.println("프로그램 종료"); // 명령3
    }
}

num은 80 이상이 아닙니다.
프로그램 종료

Case #1

int 형으로 선언하고 초기화된 num의 값은 90이고 if 문 안의 조건문은 num이 80 이상인지 검사하고 있습니다.

90은 80 이상의 값을 갖고 있기 때문에 if 문 안의 명령1 이 수행되고 명령2 는 수행되지 않습니다.

if 문을 빠져나와 명령3 이 수행됩니다.

Case #2

if 문 안의 조건문은 num이 80보다 작은지 검사하고 있습니다.

num의 값은 90이므로 num은 80보다 작지 않습니다.

그러므로 명령1 은 수행되지 않고 명령2 가 수행되며 if문을 빠져나와 명령3 이 수행됩니다.

 

if ~ else if ~ else 문

비교할 조건식이 여러 개인 경우 사용합니다.

if (조건식1) {
    조건식1이 true이면 수행되는 명령문1;
} else if (조건식2) {
    조건식1이 false이며 조건식2이 true이면 수행되는 명령문2;
} else {
    조건식 1, 2 둘 다 false이면 수행되는 명령문3;
}

명령문4;

조건식1 의 결과가 true이면 명령문1 은 수행, if문을 빠져나와 명령문4 를 수행합니다.

조건식1 의 결과가 false이고 조건식2 의 결과가 true이면 명령문2 를 수행하고 명령문4 를 수행합니다.

모든 조건식 의 결과가 false이면 명령문3 을 수행하고 명령문 4를 수행합니다.

 

E.g.

// Case #1
public class Main {
    public static void main(String[] args) {
        char c = 'z';
        if (c >= 'a' && c <= 'z') {
            System.out.println("영문 소문자입니다."); // 명령1
        } else if (c >= 'A' && c <= 'Z') {
            System.out.println("영문 대문자입니다."); // 명령2
        } else {
            System.out.println("영문자가 아닙니다."); // 명령3
        }
        
        System.out.println("프로그램 종료"); // 명령4
    }
}


영문 소문자입니다.


// Case #2
public class Main {
    public static void main(String[] args) {
        char c = 'A';
        if (c >= 'a' && c <= 'z') {
            System.out.println("영문 소문자입니다."); // 명령1
        } else if (c >= 'A' && c <= 'Z') {
            System.out.println("영문 대문자입니다."); // 명령2
        } else {
            System.out.println("영문자가 아닙니다."); // 명령3
        }
        
        System.out.println("프로그램 종료"); // 명령4
    }
}


영문 대문자입니다.


// Case #3
public class Main {
    public static void main(String[] args) {
        char c = '{';
        if (c >= 'a' && c <= 'z') {
            System.out.println("영문 소문자입니다."); // 명령1
        } else if (c >= 'A' && c <= 'Z') {
            System.out.println("영문 대문자입니다."); // 명령2
        } else {
            System.out.println("영문자가 아닙니다."); // 명령3
        }
        
        System.out.println("프로그램 종료"); // 명령4
    }
}

영문자가 아닙니다.
프로그램 종료

위의 예제는 간단한 대소문자 구분 프로그램입니다.

Case #1

문자 c는 'z'입니다.

(조건문1) 문자 c는 'a' 보다 크거나 같고 'z' 보다 작거나 같기 때문에 명령1 을 수행하고

if 문을 빠져나와 명령4 를 수행합니다.

 

Case #2

문자 c는 'A'입니다.

(조건문1) 문자 c는 'a' 보다 크거나 같지 않고 'z' 보다 작거나 같지 않기 때문에 다음 조건문으로 넘어갑니다.

(조건문2) 문자 c는 'A' 보다 크거나 같고 'Z' 보다 작거나 같기 때문에 명령2 를 수행하고

if 문을 빠져나와 명령4 를 수행합니다.

 

Case #3

문자 c는 '{'입니다.

(조건문1) 문자 c는 'a' 보다 크거나 같지 않고 'z' 보다 작거나 같지 않기 때문에 다음 조건문으로 넘어갑니다.

(조건문2) 문자 c는 'A' 보다 크거나 같지 않고 'Z' 보다 작거나 같기 않기 때문에 else 문으로 넘어갑니다.

(else 문) 문자 c는 위의 모든 조건문에 부합하지 않기 때문에 명령3을 수행하고

if 문을 빠져나와 명령4 를 수행합니다.

 

switch 문

조건문이 동등비교일 때 사용할 수 있습니다.

switch(인자) {
case 조건값1:
    실행문1;
    break;
case 조건값2:
    실행문2;
    break;
case 조건값3:
    실행문3;
    break;
...
default:
    실행문4;
}

인자로 주어진 값이 조건값과 동일한 경우 해당 실행문을 수행하고 switch 문을 빠져나옵니다.

주어진 값이 모든 조건값과 동일하지 않을 경우 default 실행문4 를 수행하고 switch 문을 빠져나옵니다.

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

[Java] while 문  (0) 2020.08.03
[Java] for 문  (0) 2020.07.30
[Java] 연산자 (operator)  (0) 2020.07.28
[Java] 데이터 타입 (Data type)  (0) 2020.07.28
[Java] 상수 (Constant)  (0) 2020.07.28
Comments