Java while 문

while 문은 조건이 참인 경우 코드를 반복해서 실행한다.

while 표현식

while (true) {
  // Start Code Block
}
  • while () 괄호 안의 조건 표현식은?
    • 조건은 boolean 형태여야 한다.
    • 조건이 참인 경우 {} 블록 내부의 코드를 실행한다.
    • 조건이 거짓인 경우 {} 블록 무시하고 벗어난다.
  • 조건 참으로 {} 블록 코드를 완료하면 while () 조건 표현식을 다시 검사한다.
    • 다시 검사한 조건이 참인 경우 {} 블록 코드를 반복한다.
    • 다시 검사한 조건이 거짓인 경우 {} 무시하고 벗어난다.

코드 문제

  • 사과 가격은 700원으로 장바구니에 담긴 갯수에 따라 결제 총 금액을 표기한다.

코드 구현

public class Store {
    public static void main(String[] args) {
        int storePrice = 0;
        int applePrice = 700;
        int qty = 3;
        int count = qty;

        while (count > 0) {
            count--;
            storePrice = storePrice + applePrice;
        }
        
        System.out.println("결제 총 금액: " + storePrice + "원");
    }
}

Code Output:
결제 총 금액: 2100원

while 문 사용의 좋은점

  • 반복문 조건 내부에서 변경되는 경우 관리가 수월함
  • 복잡한 시나리오와 조건에 적합
  • 종료 시점을 명확하지 않은 경우에 적합

while 문 사용의 나쁜점

  • 러닝커브 상승. 초기화, 조건식이 작업이 분산되어 있어서 코드의 이해가 어렵고 작성이 어렵움
  • while 문 코드 블록 변수가 바깥에서도 선언할 때가 있음. 협업 개발에서 실수가 발생할 가능성이 큼

while 동작 원리

while (count > 0) {...} while문이 어떻게 동작하는지 살펴본다.

먼저, count 변수를 qty(3) 대입하여 count 변수는 숫자 3를 담았다.

첫번째 while loop 문

  1. 반복문 while (count(3) > 0) => while (true) 조건이 true이므로 {} 블록을 수행한다.
  2. count 변수 3를 2로 감소시킨다.
  3. storePrice는 최종적으로 결제 금액을 표기한 변수이다. 사과가격(applePrice) 만큼 storePrice을 더한다.
  4. storePrice 변수는 이제 700을 담게된다.

두번째 while loop 문

  1. while (count(2) > 0) => while (true) 조건이 아직 true이므로 {} 블록을 수행한다.
  2. 변수 count 1으로 감소시킨다.
  3. 사과가격(applePrice) 만큼 storePrice을 더한다.
  4. storePrice 변수 1400가 되었다.

세번째 while loop 문

  1. while (count(1) > 0) true이므로 {} 블록을 수행한다.
  2. 변수 count 0으로 감소시킨다.
  3. 사과가격(applePrice) 만큼 storePrice을 더한다.
  4. storePrice 변수 2100가 되었다.

while 문 종료

  1. while(false) 로 {} 블록 코드를 무시한다.
  2. {} 블록코드 아래의 System.out.println(..) 코드를 실행하여 콘솔을 출력한다.

while 문제1 풀어보기

1~10까지 출력하는 코드를 작성해보도록 한다.

문제1 Java 코드

public class Count {
    public static void main(String[] args) {
        int count = 0;
        while(count < 10) {
            count++;
            System.out.println(count);
        }
    }
}
Output:
1
2
3
4
5
6
7
8
9
10