어떤 조건이 성립하는 동안 처리(프로그램 명령문 또는 명령어 집합)를 반복하여 실행하는 것을 반복(repetition)구조라 하며, 루프(loop)라고도 부릅니다. 이때 while문은 실행 전에 반복을 계속할지를 판단하는데, 이런 구조를 '사전판단반복'이라고 합니다.
int factorial(int n) {
int sum = 0;
int i = 1;
while(i <= n) {
sum += i;
i++;
}
return sum;
}
위와 같은 코드에서 while문에서는 i <= n가 참이어야 반복문을 반복하기에, 이를 사전판단반복이라 칭할수 있습니다.
자바에서 대표적인 사후판단반복문은 do-while문이 있습니다.
do-while문은 루프 본문인 do{}를 일단 한 번 실행한 다음, 조건식 비교를 하고 계속 반복할 것인지를 판단하는 사후판단 반복문입니다. while문과 마찬가지로()안의 제어식을 평가한 값이 true이면 do{}안의 명령문이 반복됩니다.
※ 참고로 for문과 일반while문과는 다르게 do-while문 마지막에는 ';' 이 있어야 합니다.
do {
System.out.print("n값(1이상) : ");
n = new Scanner(System.in).nextInt();
} while (n < 1);
일단 n을 사용자로부터 입력받고, 해당n이 0이나 음수이면 다시 입력받게끔하는 간단한 코드이지만. 이 코드는 반복문을 실행한 다음 조건을 확인하기에 사후판단반복이라 합니다.
사전판단반복문인 while, for문에서는 처음에 제어식을 평가한 결과가 false이면 루프 본문이 한 번도 실행되지 않으나, 사후판단반복문인 do-while 문에서는 루프 본문이 반드시 한 번은 실행됩니다.