Posts ☕️ [Java] 30일 안에 기초 떼기/ DAY-07
Post
Cancel

☕️ [Java] 30일 안에 기초 떼기/ DAY-07

◻️ DAY-07


챕터조건문(1)
4-1조건문(1)



◻️ 조건문이란?


  • 주어진 조건에 따라 다른 문장을 선택할 수 있도록 프로그래밍 하는 것
  • ‘만약 나이가 8살 이상이면 학교에 다닌다’ 라는 문장에서는 ‘나이’가 조건이 된다.
  • 조건문은 아래와 같은 형식으로 작성할 수 있다.
1
2
3
4
5
6
7
8
만약 (나이가 8 이상이라면) {
    학교에 다닌다    // 조건문, 반복문을 사용할 땐 조건에서 수행할 문장을
                    // { } 로 묶어서 나타낸다. 이 부분을 블록이라고 한다.
}

그렇지 않다면 {
    학교에 다니지 않는다
}

◻️ if 문


  • 조건문의 가장 단순한 형식은 if 문이다
  • 주어진 조건식이 일 경우, 중괄호 안에 있는 문장을 수행한다
  • 조건식에는 ,거짓으로 결과가 판별되는 식이나
  • , 거짓의 값을 가진 변수상수를 사용할 수 있다.


1
2
3
4
5
6
    // 만약, 나이가 8살 이상이라면 학교에 다닌다

int age = 10;
if (age >= 8) {                            // age 값이 8 이상이면
    System.out.println("학교에 다닙니다");  // 이 문장을 수행한다
}

◻️ if-else 문


  • 주어진 조건식이 일 경우 if 문 블록 내의 문장을 수행하고
  • 주어진 조건식이 거짓일 경우, else 문 블록 내의 문장을 수행한다
  • 프로그램의 논리 흐름이 조금씩 복잡해지기 때문에, 코딩에 앞서 순서도를 활용하는 것이 좋다.
  • 수행문이 ifelse중 하나만 있더라도 중괄호 { }은 꼭 쓰는 습관을 들이자.

Q1. “만약 나이가 8살 이상이면 학교에 다닌다, 그렇지 않으면 학교에 다니지 않는다”

1
2
3
4
5
6
7
int age = 8;
    if (age >= 8) {
        System.out.println("학교에 다닙니다.");
    }
    else {
        System.out.println("학교에 다니지 않습니다.");
    }

Q2. gender 변수 값이 ‘F’ 인 경우는 “여성입니다”, 그렇지 않은 경우는 “남성입니다”

1
2
3
4
5
6
7
char gender = 'F';
    if (gender == 'F') {
        System.out.println("여성입니다.");
    }
    else {
        System.out.println("남성입니다.");
    }

◻️ if - else if - else 문


  • 하나의 상황에 조건이 여러 개인 경우 if-else if-else 문을 표현할 수 있음
  • if1..., if2... 이런식으로 if를 복수로 사용하지 않고, if-else if 문을 사용하는 이유는
  • if-else-if 문은 하나의 조건을 만족하면 다음 조건을 비교하지 않고 다음 수행문으로 넘어가지만
  • if 문 만으로 이루어진 코드는 조건마다 각각 비교하여 출력한다.
  • 따라서 하나의 상황에 여러 조건을 비교해야 할 때는 if-else-if문을 사용한다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
if(조건식1) {
    수행문1; // 조건식1이 참일 경우에 수행
}

else if(조건식2) {
    수행문2; // 조건식2가 참일 경우에 수행
}

else if(조건식3) {
    수행문3; // 조건식3이 참일 경우에 수행
}

else {
    수행문4; // 위 조건이 모두 해당하지 않는 경우에 수행
}
    수행문5; // if-else if-else 문이 끝난 뒤 수행



◻️ 놀이 공원 입장료 계산하기


  • 취학전 아동(8세 미만)은 1,000원
  • 초등학생(14세 미만)은 2,000원
  • 중.고등학생(20세미만)은 2,500원
  • 그 이상은 3,000원

  • 위 조건일 경우의 놀이공원 입장료 계산 프로그램을 작성하세요
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
44
45
46
47
48
49
50
51
/*
 * Date: 2021-05-13
 * Author: Yon Kim
 * Project: [자바 초보탈출 30일]
 * Section: 07일차
 * Subject: "조건문"
 */

/*
 * 놀이공원 입장료 계산하기
 * ------------------------------
 * 미취학-아동 (8세 미만)    1,000원
 * 초등학생   (14세 미만)    2,000원
 * 청소년     (20세 미만)    2,500원
 * 성인       (20세 이상)    3,000원
*/ 

package section_04.if_else;

public class if_else1_1 {
    public static void main(String[] args) {

        int age = 10;           // 동일조건인 `나이`에 대해 여러 상황을 비교하므로
        int charge = 1000;      // if-else-if-else 문을 사용
            
            if (age < 8) {
                charge = charge + 500;
                System.out.println("미취학아동 ");
            }
            
            else if (age < 14) {
                charge = charge + 1000;
                System.out.println("초등학생 ");

            }

            else if (age < 20) {
                charge = charge + 1500;
                System.out.println("청소년 ");

            }

            else {
                charge = charge + 2000;
                System.out.println("성인 ");

            }
            System.out.printf("입장료: " + charge + "원 입니다");   // 여러 문장을 출력할 땐 + 기호로 구분해준다
        }
}



◻️ 성적에 따라 등급 부여하기


  • 100 ~ 90점은 A
  • 89 ~ 80점은 B
  • 69 ~ 60점은 D
  • 나머지는 F
  • int형 변수 scorechar형 변수 grade를 사용하여 score에 따른 grade 출력해보기
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
44
45
46
/*
 * Date: 2021-05-13
 * Author: Yon Kim
 * Project: [자바 초보탈출 30일]
 * Section: 07일차
 * Subject: "조건문"
 */


/*
 * 성적에 따른 등급 부여하기
 * ------------------------------
 * 100 ~ 90점은  A
 * 89 ~ 80점은   B
 * 69 ~ 60점은   D
 * 나머지는      F
 * `int`형 변수 `score`와 `char`형 변수 `grade`를 사용하여 `score`에 따른 `grade` 출력해보기
 */ 

package section_04.if_else;

public class if_else1_2 {
    public static void main(String[] args) {

        int score = 85;
        char grade = 'A';

            if (score >= 90) {
                grade = 'A';
            }

            else if (score >= 80) {
                grade = 'B';
            }

            else if (score >= 60) {
                grade = 'C';
            }

            else {
                grade = 'D';
            }

        System.out.println(score + "점, " + grade + "등급 입니다");
    }
}
  • 만약 A 또는 B 와 같이 두 가지 조건 중 하나만 택1 하는 경우에는
  • else-if 문 대신 조건연산자를 이용해 간단하게 프로그래밍 할 수도 있다.
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
/*
 * 성적에 따른 등급 계산하기(2)
 * ------------------------------
 * 90점 이상은  A
 * 나머지는     B
 * 
 * 두 가지의 조건만 있을 경우, 조건연산자를 사용한 코드로 구현해보기
 */ 

package section_04.if_else;

public class if_else1_3 {
    public static void main(String[] args) {

        char grade;
        int score;

        score = 85;
        grade = (score >= 90)? 'A' : 'B';

        System.out.println(score + "점," + grade + "등급입니다.");
    }
}



◻️ Switch-Case


  • if문을 사용하기 번거로운 조건문에 사용할 수 있다
  • 조건식의 결과가 정수 또는 문자열이고 그 값에 따라 수행되는 경우가 각각 다른 경우
  • switch-case 문으로 구성하면 코드도 깔끔하고 가독성도 좋다
  • switch-case 문은 여러 문장이 있어도 중괄호 { }를 반복하지 않는다

  • case: ~ break 까지가 조건에 해당하는 문장이다
  • if 문의 else 역할을 switch-case문의 default가 수행한다
  • case 문에는 반드시 break 문을 사용해야 한다.
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
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
/*
 * 순위에 따른 메달 부여
 * ------------------------------
 * 순위에 따라 다른 색깔의 매달을 부여한다
 * 순위에 들지 못하면 'A'값을 부여한다.
 */ 

package section_04.if_else;

public class switch_case1_1 {
    public static void main(String[] args) {

        int ranking = 1;
        String medalColor;

            switch(ranking) {
                case 1: medalColor = "Gold";
                        break;
                case 2: medalColor = "Silver";
                        break;
                case 3: medalColor = "Bronze";
                        break;

                default: 
                        medalColor = "A";
            }
            System.out.println(ranking + " 위에게 " + medalColor + " 메달을 수여합니다");
    }
}


```java

/*
 * 각 case의 조건이 같은 경우의 작성법
 * ------------------------------
 * 각 달(month)의 일수(days) 세기
 */ 


package section_04.if_else;

public class switch_case1_2 {
    public static void main(String[] args) {

        int days = 31;
        int month = 4;

        switch(month) {
            
            case 1: case 3 : case 5: case 7 : case 8: case 10 : case 12 : days = 31;
                break;

            case 4: case 6 : case 9 : case 11 : days = 30;
                break;

            case 2 : days = 28;
                break;
        }
        System.out.println(month + "월은" + days + "일 입니다.");
    }
}



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
/*
 * 문자열을 사용하여 case 문 구현하기
 * ------------------------------
 */ 


package section_04.if_else;

public class switch_case1_3 {
    public static void main(String[] args) {
        String medal = "Silver";

        switch(medal) {
            
            case "Gold":
            System.out.println("금메달 입니다");
            break;

            case "Silver":
            System.out.println("은메달 입니다");    
            break;

            case "Bronze":
            System.out.println("동메달 입니다");
            break;

            default:
            System.out.println("순위권 밖입니다");
            break;
        }
    }
}



◻️ Switch-Case 문 연습문제


Q. 5층 건물이 있다. 1층은 약국, 2층은 정형외과, 3층은 피부과, 4층은 치과, 5층은 헬스클럽이다. 건물의 층을 누르면 그 층이 어떤 곳인지 알려주는 엘리베이터가 있다고 했을 때, 5층인 경우, ‘5층 헬스 클럽입니다’ 라고 출력해주는 프로그램을 switch 문을 이용해 작성할 것

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
44
45
/*
 * Q. 
 * 5층 건물이 있다. 
 * 1층 약국, 2층 정형외과, 3층 피부과, 4층 치과, 5층 헬스클럽
 * 건물의 층을 누르면 그 층이 어떤 곳인지 알려주는 엘리베이터가 있다고 했을 때, 
 * 5층인 경우, '5층 헬스 클럽입니다' 라고 출력해주는 프로그램을 
 * switch 문을 이용해 작성할 것
 */ 

package section_04.if_else;

public class switch_case1_4 {
    public static void main(String[] args) {
        
        int floor = 5;

        switch(floor){
            
            case 1:
            System.out.println(floor + "층, 약국");
            break;

            case 2:
            System.out.println(floor + "층, 정형외과");
            break;

            case 3:
            System.out.println(floor + "층, 피부과");   
            break;

            case 4:
            System.out.println(floor + "층, 치과"); 
            break;

            case 5: 
            System.out.println(floor + "층, 헬스클럽");
            break;

            default:
            System.out.println("버튼을 다시 눌러주세요");
            break;
        }
    }   
}

This post is licensed under CC BY 4.0 by the author.