본문 바로가기

Development

(Java) Chapter4. 제어문

1. 조건문 if

여러 조건이나 범위일 때 사용

  1) 조건이 한 가지 일 경우

int hour = 10;                                //  오전 10시
if (hour < 14)                                // 참 조건 -> 이후 명령 수행
    System.out.println("아이스 아메리카노 +1");
System.out.println("샷추가");                   // 중괄호 {}가 없어서 명령이 조건절에 종속되지 않음
System.out.println("커피 주문 완료 #1");

// 2개 이상의 문장을 실행할 때
int hour2 = 15;                                //  15시
if (hour2 < 14) {                              // 거짓 조건 > 중괄호 명령 수행
    System.out.println("아이스 아메리카노 +1");
    System.out.println("샷추가");
}
System.out.println("커피 주문 완료 #2");

 2) 조건이 두 가지 일 경우

// 오후 2시 이전, 모닝 커피를 마시지 않은 경우?
hour = 10;
boolean morningCoffee = false;                  // 모닝 커피 마신 유무
if (hour < 14 && morningCoffee == false) {      // 비교 연산 등호 (참 & 참)
    System.out.println("아이스 아메리카노 +1");     // 출력
}
System.out.println("커피 주문 완료 #3");

// 다른 방식
hour = 15;
boolean morningCoffee2 = false;                  // 모닝 커피 마신 유무
if (hour < 14 && !morningCoffee2) {              // 논리 부정 연산 (거짓 & 거짓)
    System.out.println("아이스 아메리카노 +1");      // 출력 안함
}
System.out.println("커피 주문 완료 #4");

// 오후 2시 이후이거나 모닝 커피를 안마신 경우?
hour = 15;
morningCoffee = true;
if (hour >= 14 || morningCoffee == true) {           // 시간 참 or 모닝커피 참
    System.out.println("아이스 아메리카노 (디카페인) +1");  // 둘 중 하나라도 참이면 출력(시간 바뀌어도 출력될 것)
}
System.out.println("커피 주문 완료 #5");

 

2. 조건문 If Else

int hour = 10;
if (hour < 14) {                                      // 오후 2시 이전이면
    System.out.println("아이스 아메리카노 +1");
} else {                                              // 조건 이외의 경우이면?
    System.out.println("아이스 아메리카노 (디카페인) +1");   // 해당 출력
}
System.out.println("커피 주문 완료 #1");                  // 10시이므로 첫 문장 출력

// 오후 2시 이후이거나 모닝 커피를 마신 경우?
hour = 15;
boolean morningCoffee = true;
if (hour >= 14 || morningCoffee == true) {             // 조건 2개, 참 or 참
    System.out.println("아이스 아메리카노 (디카페인) +1");    // 둘 다 참이므로 해당 문장 출력
} else {
    System.out.println("아이스 아메리카노 +1");             // 둘 다 거짓일 경우만 해당 문장 출력
}
System.out.println("커피 주문 완료 #2");                   // 첫 문장과 함께 출력

 

3. Else If

// 한라봉 에이드가 있으면 +1
// 또는 망고 주스가 있으면 +1
// 또는 아이스 아메리카노 +1 = 앞 두 조건이 모두 만족하지 않으면 최종적으로 마지막 주문

boolean hallabongAde = true;                  // 한라봉 에이드
boolean mangoJuice = true;                    // 망고 주스

if (hallabongAde) {
    System.out.println("한라봉 에이드 +1");       // 한라봉 에이드 있어서 해당 문장 출력
} else if (mangoJuice) {
    System.out.println("망고 주스 +1");
} else {
    System.out.println("아이스 아메리카노 +1");
}
System.out.println("커피 주문 완료 #1");

// else if는 여러번 사용 가능
hallabongAde = false;                          // 한라봉 에이드
mangoJuice = false;                            // 망고 주스
boolean orangeJuice = true;                    // 오렌지 주스
if (hallabongAde) {
    System.out.println("한라봉 에이드 +1");       // 한라봉 에이드 없음
} else if (mangoJuice) {
    System.out.println("망고 주스 +1");          // 망고 주스 없음
} else if (orangeJuice) {
    System.out.println("오렌지 주스 +1");        // 오렌지 주스 있어서 해당 문장 출력
} else {
    System.out.println("아이스 아메리카노 +1");
}
System.out.println("커피 주문 완료 #2");

// else는 없어도 됨
hallabongAde = false;                          // 한라봉 에이드
mangoJuice = false;                            // 망고 주스
orangeJuice = false;                           // 오렌지 주스
if (hallabongAde) {
    System.out.println("한라봉 에이드 +1");       // 한라봉 에이드 없음
} else if (mangoJuice) {
    System.out.println("망고 주스 +1");          // 망고 주스 없음
} else if (orangeJuice) {
    System.out.println("오렌지 주스 +1");        // 오렌지 주스 없음
}
System.out.println("커피 주문 완료 #3");          // 다 거짓으로 해당 문장만 출력

 

4. 스위치 케이스

확실한 값이 있는 경우에는 스위치 케이스문을 사용함

  1) if문과 비교

// 석차에 따른 장학금 지급
// 1등 : 전액 장학금
// 2등 : 반액 장학금
// 3등 : 반액 장학금
// 그 외 : 장학금 대상 아님

// if else 문을 이용
int ranking = 1;                            // 등수
if (ranking == 1) {
    System.out.println("전액 장학금");
} else if (ranking == 2) {                  // (ranking == 2 || ranking == 3)으로 합쳐도 가능
    System.out.println("반액 장학금");
} else if (ranking == 3) {
    System.out.println("반액 장학금");
} else {
    System.out.println("장학금 대상 아님");
}
System.out.println("조회 완료 #1");

// Switch Case 문을 이용
ranking = 1;
switch (ranking) {
    case 1:
        System.out.println("전액 장학금");
        break;
    case 2:                                 // case 2와 3을 합치려면? 아래 두 행 삭제
        System.out.println("반액 장학금");     // case 2와 3을 합치려면 삭제
        break;                              // case 2와 3을 합치려면 삭제
    case 3:
        System.out.println("반액 장학금");
        break;
    default:
        System.out.println("장학금 대상 아님");
}
System.out.println("조회 완료 #2");

  2) 실행의 중첩

// 중고상품의 등급에 따른 가격을 책정 (1급 : 최상, 4급 : 최하)
int grade = 1;                      // 등급
int price = 7000;                   // 기본 가격
switch (grade) {
    case 1:
        price += 1000;              // price = price + 1000
    case 2:
        price += 1000;
    case 3:
        price += 1000;
        break;
}
System.out.println(grade + "등급 제품의 가격 : " + price + "원")

5. 반복문 For

// 반복문 사용
for (int i = 0; i < 10; i++) {                      //(선언; 조건; 증감)
    System.out.println("어서오세요. 호구입니다." + i);    // 수행 명령, i가 10보다 작을 때 까지 수행
}

// 짝수만 출력 (fori만 적고 엔터)
// 0 ,2, 4, 6, 8만 출력
for (int i = 0; i < 10; i += 2) {
    System.out.print(i);                          // ln은 줄바꿈, 없으면 한 행으로 나옴
}

System.out.println();

// 홀수만 출력
// 1, 3, 5, 7, 9
for (int i = 1; i < 10; i += 2) {
    System.out.print(i);
}

System.out.println();

// 거꾸로 출력
// 5, 4, 3, 2, 1
for (int i = 5; i > 0; i--) {
    System.out.print(i);
}

System.out.println();

// 1부터 10 까지 수들의 합
// 1 + 2 + 3 + ... + 10 = 55
int sum = 0;
for (int i = 1; i <= 10; i++) {
    sum += i;
    System.out.println("현재까지 총 합은 " + sum + "입니다.");
}
System.out.println("1부터 10까지의 모든 수의 총합은 " + sum + "입니다.");

※ 마지막 for문 예제는 모든 단계의 덧셈 결과가 다 출력됨

 

6. 반복문 While

// 수영장에서 수영을 하는 모습
int distance = 25;                  // 전체 거리 25m
int move = 0;                       // 현재 이동거리 0m
while (move < distance) {           // 현재 이동거리가 전체 거리보다 작다는 조건이 참인 동안 반복 수행
    System.out.println("발차기를 계속 합니다.");
    System.out.println("현재 이동거리 : " + move);
    move += 3;                      // 3미터씩 이동(0, 3, 6, 9, 12 ... )
}
System.out.println("도착하였습니다.");

// 무한 루프
move = 0
while (move < distance) {           // 현재 이동거리가 전체 거리보다 작다는 조건이 참인 동안 반복 수행
    System.out.println("발차기를 계속 합니다.");
    System.out.println("현재 이동거리 : " + move);
}                                   // 반복 탈출 조건이 없으므로 무한대로 같은 상태 유지
System.out.println("도착하였습니다.");

 

7. 반복문 Do While

move = 0;
height = 25;                        // 키가 25m
while (move + height < distance) {
    System.out.println("발차기를 계속 합니다.");
    System.out.println("현재 이동거리 : " + move);
    move += 3;                      // 3m 이동
}
System.out.println("도착했습니다.");   // 키와 거리가 같으므로 바로 도착

// Do While 반복문
do {                                // 최소 한번은 수행할 명령
    System.out.println("발차기를 계속 합니다.");
    System.out.println("현재 이동거리 : " + move);
    move += 3;
} while (move + height < distance);
System.out.println("도착했습니다.");

 

8. 이중 반복문

// 별 (*) 사각형 만들기
/*
*****
*****
*****
*****
*****
 */

for (int i = 0; i < 5; i++) {           // i가 0부터 5보다 작을 때 까지 +1
    for (int j = 0; j < 5; j++) {       // j가 0부터 5보다 작을 때 까지 +1
        System.out.print("*");
    }
    System.out.println();
}

System.out.println("----------구분선----------");

// 별 왼쪽 삼각형 만들기
/*
*
**
***
****
*****
 */

for (int i = 0; i < 5; i++) {
    // for (int j = 0; j <= 1; j++) {
    for (int j = 0; j < i + 1; j++) {
        System.out.print("*");
    }
    System.out.println();
}

System.out.println("----------구분선----------");

// 오른쪽 별삼각형 만들기
/*
    *
   **
  ***
 ****
*****
 */

for (int i = 0; i < 5; i++) {
    for (int j = 0; j < 4 - i; j++) {
        System.out.print(" ");
    }
    for (int k = 0; k <= i; k++) {
        System.out.print("*");
    }
    System.out.println();
}

9. 구구단

for (int i = 2; i < 10; i++) {
    for (int j = 1; j < 10; j++) {
        System.out.println(i + " * " + j + " = " + (i * j));
    }
    System.out.println();
}

10. Break

// 치킨집 매일 20마리만 튀김 (1인당 1마리만 구매 가능)
// 손님 50명 대기

// for문
int max = 20;
for (int i = 1; i <= 50; i++) {
    System.out.println(i + "번 손님, 주문하신 치킨 나왔습니다.");
    if (i == max) {
        System.out.println("금일 재료가 소진되었습니다.");
        break;                                              // 반복문 탈출
    }
}
System.out.println("영업을 종료합니다.");

System.out.println("--------------------");

// While 문
int index = 1;                         // 손님 대기 번호
while (index <= 50) {
    System.out.println(index + "번 손님, 주문하신 치킨 나왔습니다.");
    if (index == max) {
        System.out.println("금일 재료가 모두 소진되었습니다.");
        break;
    }
    index++;
}
System.out.println("영업을 종료합니다.");

11. Continue

// 치킨 노쇼 손님 있을
// For
int max = 20;
int sold = 0;
int noShow = 17;
for (int i = 1; i <= 50; i++) {
    System.out.println(i + "번 손님, 주문하신 치킨 나왔습니다.");

    // noShow라면?
    if (i == noShow) {
        System.out.println(i + "번 손님, 노쇼로 인해 다음 손님에게 기회가 넘어갑니다.");
        continue;             // 바로 다음 동작으로 새롭게 시작하여 sold 카운트를 하지 않음
    }
    sold++;                   // 판매 처리
    if (sold == max) {
        System.out.println("금일 재료가 모두 소진되었습니다.");
        break;
    }
}
System.out.println("금일 영업 종료합니다.");

// While 문
sold = 0;
int index = 0;                  // 손님 번호
while (index <50) {             // whild (true) 도 뒤에 이미 조건이 붙어있어서 가능
    index++;
    System.out.println(index + "번 손님, 주문하신 치킨 나왔습니다.");

    // noShow
    if (index == noShow) {
        System.out.println(index + "번 손님, 노쇼로 인해 다음 손님에게 기회가 넘어갑니다.");
        continue;
    }
    sold++;
    if (sold == max) {
        System.out.println("금일 재료가 모두 소진되었습니다.");
        break;
    }
}
System.out.println("금일 영업 종료합니다.");

 

'Development' 카테고리의 다른 글

(Java) Chapter6. Method  (0) 2023.01.08
(Java) Chapter5. Array  (0) 2023.01.06
(Java) Chapter3. 문자열  (0) 2023.01.04
(Java) Chapter 1 환경설정 및 자료형  (0) 2023.01.03