자, i를 변화시켜 항상 참인 상태에서 벗어납시다. 0, 1, 2, 3, 4…라고 출력하려고 했으므로 i를 1씩 증가해보겠습니다. 이럴 경우에는 어떤 연산자를 사용해야 할까요? 맞습니다. 증감 연산자입니다. 증감 연산자를 사용해 i에 1을 더하고, 더한 값을 i에 다시 저장합니다. 이 과정을 반복하면 i가 10이 됐을 때 조건을 만족하지 않으므로 반복을 멈출 것입니다. 다시 실행해보겠습니다.
public class WhileExam {
public static void main(String[] args) {
int i = 0;
while(i < 10) {
System.out.println(i);
i++;
}
}
}
실행결과
0 1 2 3 4 5 6 7 8 9
예상한 대로 0~9까지 숫자를 출력했습니다. 차례대로 살펴보면 i는 처음에 0이었을 때 출력되고, 증감 연산자를 만나 1이 됐습니다. 다시 while 문으로 올라가서 조건을 비교하니 1은 10보다 작으므로 참입니다. 1을 출력하고 증감 연산자를 만나 2가 됐습니다. 다시 while 문으로 올라가서 조건을 비교하니 2는 10보다 작으므로 참입니다. 이러한 과정을 9까지 반복했습니다. 그리고 9를 출력하고 증감 연산자를 만나 10이 됐습니다. while 문의 조건에 따라 i는 이제 10보다 작지 않으므로 반복을 멈춥니다.
while 문은 이렇게 조건문을 잘 부여해 수행해야 무한 루프에 빠지는 것을 막을 수 있습니다. 예제를 하나 더 실습해볼까요? 이번에는 덧셈을 반복해 1~100까지의 합을 구하겠습니다.
우선 합을 구해서 넣을 변수를 total이라고 선언하고, 증가시킬 변수를 i로 선언합니다. 첫 번째 실습에서는 0~9까지 출력했기 때문에 i를 0으로 초기화시켰습니다. 이번에는 1~100까지 더할 것이므로 1로 초기화시킵니다.
public class WhileExam { public static void main(String[] args) { int total = 0; int i = 1; } }
이어서 while 문을 작성합니다. ‘i가 100보다 작거나 같을 때’까지 반복하라는 조건을 줍니다. 합계를 구해야 하므로 while 블록 안에는 합계를 담을 수 있는 total 변수에 값을 계속 누적시킵니다. 누적시키는 값은 i입니다. 그리고 i는 1부터 시작해 100까지 계속 1씩 증가해야겠죠?
출력은 반복 실행할 필요 없이 while 문이 실행을 모두 마친 다음 딱 한 번만 total 값을 출력하겠습니다. 이제 실행해볼까요?
public class WhileExam { public static void main(String[] args) { int total = 0; int i = 1; while(i <= 100) { total = total + i; i++; } System.out.println(total); } }
실행결과
5050
1~100까지의 값을 모두 더한 값, 5050을 출력했습니다.
지금까지 while 문을 알아봤습니다. 무한 루프를 조심하면서 조건을 설정하는 법을 연습해보세요.