[Java] for문 2

코드 속의 "진돌"·2023년 12월 30일
0
post-thumbnail

✏️ for문 구조

for (초기식; 조건식; 증감식) {
	// 코드
}

for문에서 초기식, 조건식, 증감식은 선택이다. 다음과 같이 모두 생략해도 된다. 단 생략해도 각 영역을 구분하는 세미콜론(;)은 유지해야 한다.

for ( ; ; ) {
	// 코드
}

이렇게 하면 조건이 없기 때문에 무한 반복하는 코드가 된다. 따라서 다음과 같은 코드가 된다.

while (true) {
	// 코드
}

✅ 문제


1부터 시작하여 숫자를 계속 누적해서 더하다가 합계가 10보다 큰 처음 값은 얼마인가?

✏️ Break2

package loop;

public class Break2 {

  public static void main(String[] args) {
    int sum = 0;
    int i = 1;

    for ( ; ; ) {
      sum += i;
      if (sum > 10) {
        System.out.println("합이 10보다 크면 종료 : i = " + i + " sum = " + sum);
        break;
      }
      i++;
    }
  }
}
  • for ( ; ; )를 보면 조건식이 없다. for문은 조건이 없으면 무한 반복한다.
  • sum > 10 조건을 만족하면 break를 사용해서 while문을 빠져나간다.

✏️ 실행 결과

for문은 증가하는 값이 무엇인지 초기식과 증감식을 통해서 쉽게 확인할 수 있다. 이 코드나 while문을 보면 어떤 값이 반복에 사용되는 증가 값인지 즉시 확인하기는 어렵다.

여기서는 i가 증가하는 값이다. 따라서 다음과 같이 ifor문에 넣어서 관리하도록 변경하면 더 깔끔한 코드가 된다.

✏️ Break3

package loop;

public class Break3 {

  public static void main(String[] args) {
    int sum = 0;

    for (int i = 1; ; i++) {
      sum += i;
      if (sum > 10) {
        System.out.println("합이 10보다 크면 종료 : i = " + i + " sum = " + sum);
        break;
      }
    }
  }
}

정리하면 for문이 없이 while문으로 모든 반복을 다룰 수 있다. 하지만 카운터 변수가 명확하거나, 반복 횟수가 정해진 경우에는 for문을 사용하는 것이 구조적으로 더 깔끔하고, 유지보수 하기 좋다.

profile
매일 성장하는 주니어 개발자의 기록📝

0개의 댓글