호쌤
호쌤 Just For Fun

[Java] 조건문

크리에이티브 커먼즈 라이선스 ITPAPER(호쌤,쭈쌤)에 의해 작성된 ≪[Java] 조건문≫은(는) 크리에이티브 커먼즈 저작자표시-비영리-동일조건변경허락 4.0 국제 라이선스에 따라 이용할 수 있습니다.
이 라이선스의 범위 이외의 이용허락을 얻기 위해서는 leekh4232@gmail.com으로 문의하십시오.

[Java] 조건문

프로그램 소스코드 내의 명령어가 무조건 실행되는 것이 아니라 특정 조건이 충족될 경우만 선택적으로 실행되도록 설정하는 문법적 표현을 조건문이라고 합니다.

1) if문

괄호 안에 주어진 조건이 참인 경우 블록{}안을 수행.

1
2
3
if (조건) {
    // ... 조건이 참인 경우 실행할 명령 ...
}

조건에 명시할 수 있는 형식

| 구분 | 연산 | |—|—-| | 비교식 | ==, !=, >, >=, <, <= | | 논리식 | &&, || | | 논리값 | true/false |

If1.java

비교식을 조건으로 사용하는 경우

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
public class If1 {
    public static void main(String[] args) {
        int myage = 19;

        if (myage == 19) {
            System.out.println("19살 입니다.");
        }

        if (myage != 20) {
            System.out.println("20살이 아닙니다.");
        }

        if (myage > 19) {
            System.out.println("성인입니다.");
        }

        if (myage <= 19) {
            System.out.println("학생입니다.");
        }
    }
}
출력결과
1
2
3
19살 입니다.
20살이 아닙니다.
학생입니다.

If2.java

비교식과 논리식을 조건으로 사용하는 경우

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
public class If2 {
    public static void main(String[] args) {
        int point = 75;

        // AND(&&) --> 두 조건이 모두 참이어야 전체가 참
        if (point > 70 && point <= 80) {
            System.out.println("C학점 입니다.");
        }

        // OR(||) --> 두 조건중 하나라도 참이면 전체가 참
        if (point <= 70 || point > 80) {
            System.out.println("범위를 벗어났습니다.");
        }
    }
}
출력결과
1
C학점 입니다.

If3.java

참을 의미하는 논리값을 조건으로 사용하는 경우.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
public class If3 {
    public static void main(String[] args) {
        // 이 변수에 할당되는 값을 false로 변경해서도 결과를 확인해 보세요.
        boolean is_korean = true;

        if (is_korean == true) {
            System.out.println("한국사람입니다.");
        }

        if (is_korean == false) {
            System.out.println("한국사람이 아닙니다.");
        }

        if (is_korean) {    // 값 자체가 참이므로 성립된다.
            System.out.println("한국사람입니다.");
        }

        if (!is_korean) {   // "!"는 값을 부정한다. 참을 부정하므로 거짓이다.
            System.out.println("한국사람이 아닙니다.");
        }
    }
}
출력결과

is_korean이 true인 경우

1
2
한국사람입니다.
한국사람입니다.

is_korean이 false인 경우

1
2
한국사람이 아닙니다.
한국사람이 아닙니다.

2) if ~ else문

조건이 참인 경우 if 블록이 실행, 그렇지 않은 경우 else 블록이 실행

1
2
3
4
5
if (조건) {
    // ... 조건이 참인 경우 실행할 명령 ...
} else {
    // ... 조건이 참이 아닌 경우 실행할 명령 ...
}

Ifelse.java

1
2
3
4
5
6
7
8
9
10
11
12
public class Ifelse {
    public static void main(String[] args) {
        // 이 변수에 할당되는 값을 false로 변경해서도 결과를 확인해 보세요.
        boolean is_korean = true;

        if (is_korean == true) {
            System.out.println("한국사람입니다.");
        } else {
            System.out.println("한국사람이 아닙니다.");
        }
    }
}

출력결과

is_korean이 true인 경우

1
한국사람입니다.

is_korean이 false인 경우

1
한국사람이 아닙니다.

#03. if ~ else if ~ else 문

여러개의 조건을 나열하여 그 중 가장 처음 만나는 참인 조건의 블록을 수행하고 그 외의 블록은 실행하지 않고 빠져 나간다.

else if 블록은 필요한 만큼 나열 가능하다.

else 블록은 필요하지 않다면 생략 가능하다.

1
2
3
4
5
6
7
8
9
if (1 조건) {
    ...
} else if (2 조건) {
    ...
} else if (3 조건) {
    ...
} else {
    ...
}

ElseIf.java

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
public class ElseIf {
    public static void main(String[] args) {
        int point = 87;

        if (point > 90 && point <= 100) {
            System.out.println("A");
        } else if (point > 80 && point <= 90) {
            System.out.println("B");
        } else if (point > 70 && point <= 80) {
            System.out.println("C");
        } else {
            System.out.println("F");
        }
    }
}
출력결과
1
B

#04. switch문

하나의 변수값에 대한 여러가지 경우의 수를 나열하고 그 중 일치하는 case 블록을 break 명령을 만나기 전까지 실행함.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
switch (변수) {
    case '값1':    // 경우의 수는 필요한 만큼 나열
        ...
        break;
    case '값2':
        ...
        break;
    case '값n':
        ...
        break;
    default: // 일치하는 경우가 없을 경우 수행할 블록(생략가능)
        ...
        break;
}

switch1.java

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
public class Switch1 {
    public static void main(String[] args) {
        char grade = 'B';

        switch (grade) {
            case 'A':
                System.out.println("91~100점 사이 입니다.");
                break;
            case 'B':
                System.out.println("81~90점 사이 입니다.");
                break;  // 이 위치를 주석으로 막은 상태로도 실행해 보세요.
            case 'C':
                System.out.println("71~80점 사이 입니다.");
                break;
            default:
                System.out.println("70점 이하 입니다.");
                break;
        }
    }
}
출력결과

break가 있는 경우

1
81~90점 사이 입니다.

break가 없는 경우

1
2
81~90점 사이 입니다.
71~80점 사이 입니다.

의도적으로 break절을 조절하는 경우

조건에 맞는 case가 두 개 이상인 경우.

grade값이 A, B, C인 세 개의 경우가 모두 하나의 문장을 실행할 수 있도록 블록 구조를 구성한다.

Switch2.java

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
public class Switch2 {
    public static void main(String[] args) {
        char grade = 'B';

        switch (grade) {
            case 'A':
            case 'B':
            case 'C':
                System.out.println("Pass");
                break;
            default:
                System.out.println("Not-Pass");
                break;
        }
    }
}
출력결과
1
Pass

연습문제

다음의 내용은 키와 몸무게를 입력받아 표준체중을 출력하는 프로그램을 구현하기 위한 요구사항이다. 주어진 요구사항을 충족하는 프로그램을 완성하시오.

요구사항

1) 키와 몸무게

사용자로부터 직접 값을 입력받는 변수를 다음과 같이 준비합니다.

변수명 데이터 타입 설명
myHeight int 자신의 키
myWeight int 자신의 몸무게

2) 표준체중 구하기

표준체중을 의미하는 double형 변수 standardWeight 변수를 다음의 공식으로 구하세요.

키가 150 이하인 경우
\[표준체중 = 신장cm - 110\]
키가 151 이상인 경우
\[표준체중 = (신장cm - 110) \times 0.9\]

3) 비만도 구하기

비만도를 의미하는 double형 변수 obesity를 다음의 공식으로 구하세요.

\[비만도 = {현재 몸무게 - 표준체중 \over 표준체중} \times 100\]

4) 결과 출력하기

다음의 범위에 따라서 비만도 측정치를 if문을 사용해서 출력하세요.

  • 20% 이하 - 정상(안심)
  • 20% 초과, 30% 이하 - 경도비만(주의)
  • 30% 초과, 50% 이하 - 중등도 비만(위험)
  • 50% 초과 - 고도비만(매우위험)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
import java.util.Scanner;

public class MyWeight {
    public static void main(String[] args) {
        Scanner reader = new Scanner(System.in);

        System.out.print("키를 정수로 입력하세요: ");
        int myHeight = reader.nextInt();

        System.out.print("몸무게를 정수로 입력하세요: ");
        int myWeight = reader.nextInt();

        // 표준체중
        double standardWeight = 0;
        // 비만도
        double obesity = 0;


        /** 표준체중 구하기 */
        if (myHeight <= 150) {
            // 표준체중(키 150이하) = 신장cm - 110
            standardWeight = myHeight - 110;
        } else {
            // 표준체중(키 151이상) = (신장cm - 110) x 0.9
            standardWeight = (myHeight - 110) * 0.9;
        }

        /** 비만도 구하기 */
        obesity = ((myWeight - standardWeight) / standardWeight) * 100;


        /** 비만도에 따른 결과 출력 */
        if (obesity <= 20) {
            System.out.println("정상. 안심하세요.");
        } else if (obesity > 20 && obesity <= 30) {
            System.out.println("경도비만. 주의하세요.");
        } else if (obesity > 30 && obesity <= 50) {
            System.out.println("중등도 비만!! 위험합니다.");
        } else {
            System.out.println("고도비만!! 매우 위험합니다.");
        }
    }
}



크리에이티브 커먼즈 라이선스 ITPAPER(호쌤,쭈쌤)에 의해 작성된 ≪[Java] 조건문≫은(는) 크리에이티브 커먼즈 저작자표시-비영리-동일조건변경허락 4.0 국제 라이선스에 따라 이용할 수 있습니다.
이 라이선스의 범위 이외의 이용허락을 얻기 위해서는 leekh4232@gmail.com으로 문의하십시오.

comments powered by Disqus