본문으로 이동
메뉴 여닫기
환경 설정 메뉴 여닫기
개인 메뉴 여닫기
로그인하지 않음
지금 편집한다면 당신의 IP 주소가 공개될 수 있습니다.

자바 반복문은 자바에서 조건이 참인 동안 같은 문장을 되풀이해 실행하는 제어문으로, for, while, do-while, 그리고 배열·컬렉션을 차례로 도는 향상된 for 가 있다.

자바의 반복문 문법은 C 언어 반복문과 거의 같다. 다른 점은 조건식이 반드시 boolean 이어야 한다는 것(정수 0·1 을 조건으로 쓸 수 없다)과, 배열·컬렉션의 원소를 하나씩 꺼내는 향상된 for 문이 있다는 것이다. 실행 결과를 묻는 문제는 반복 변수와 누적 변수의 값을 회차마다 표로 적어 가면 틀리지 않는다.

문 조건 검사 시점 최소 실행 횟수 주로 쓰는 곳
for 반복 전 0회 반복 횟수가 정해져 있을 때
while 반복 전 0회 조건으로 끝날 때
do-while 반복 후 1회 일단 한 번은 실행해야 할 때
향상된 for 원소가 남았는지 0회 배열·컬렉션 전체를 차례로 읽을 때
for (초기식; 조건식; 증감식) {
    문장;
}
  • 초기식을 한 번 실행하고, 조건식이 참이면 문장을 실행한 뒤 증감식을 실행하는 과정을 되풀이한다
  • 초기식과 증감식에는 쉼표로 여러 식을 나열할 수 있다. for (j = 0, i = 0; i <= 5; i++) 는 j 와 i 를 둘 다 0 으로 놓고 시작한다
  • 세 식은 모두 생략할 수 있다. for (;;) 는 무한 반복이다
while (조건식) { 문장; }

do { 문장; } while (조건식);

do-while 은 문장을 먼저 실행하고 조건을 검사하므로 조건이 처음부터 거짓이어도 한 번은 실행된다.

int[] a = {3, 1, 4};
for (int x : a) {
    System.out.print(x);   // 314
}

인덱스 없이 원소를 차례로 꺼낸다. 꺼낸 변수 x 에 값을 대입해도 배열 원소는 바뀌지 않는다.

  • break : 가장 안쪽 반복문을 즉시 빠져나간다
  • continue : 이번 회차의 남은 문장을 건너뛰고 다음 조건 검사(for 는 증감식)로 간다
  • 이름표를 붙이면(outer: for (...)) break outer; 로 바깥 반복문까지 한 번에 빠져나갈 수 있다
  • System.out.print(x) : x 만 출력하고 줄을 바꾸지 않는다. 사이에 공백도 넣지 않는다
  • System.out.println(x) : x 를 출력한 뒤 줄을 바꾼다
  • System.out.printf("%d ", x) : 형식 문자열대로 출력한다. 공백은 형식 문자열에 쓴 만큼만 나온다

예제 - 누적 합 출력

편집 원본 편집
int i, j;
for (j = 0, i = 0; i <= 5; i++) {
    j += i;
    System.out.print(i);
    if (i == 5) {
        System.out.print("=");
        System.out.print(j);
    } else {
        System.out.print("+");
    }
}
i j += i 후 j 이번 회차 출력
0 0 0+
1 1 1+
2 3 2+
3 6 3+
4 10 4+
5 15 5=15

i 가 6 이 되면 조건 i <= 5 가 거짓이라 끝난다. print 는 공백과 줄바꿈을 넣지 않으므로 출력은 0+1+2+3+4+5=15 한 줄이다. "0 + 1 + 2 …" 처럼 공백을 넣어 쓰면 실제 출력과 다르다.