이 튜토리얼에서는 예제와 함께 Java에서 while과 do while 루프를 사용하는 방법을 배웁니다.
컴퓨터 프로그래밍에서 루프는 코드 블록을 반복하는 데 사용됩니다. 예를 들어 메시지를 100번 표시하려면 루프를 사용할 수 있습니다. 단순한 예시지만 루프로 훨씬 더 많은 것을 달성할 수 있습니다.
이전 튜토리얼에서 Java for 루프를 배웠습니다. 여기서는 while과 do...while 루프를 배웁니다.
Java while 루프
Java while 루프는 특정 조건이 충족될 때까지 특정 코드를 실행하는 데 사용됩니다. while 루프의 구문은:
while (testExpression) {
// 루프 본문
}
여기서
while 루프는 괄호 () 안의 testExpression을 평가합니다.
testExpression이 true로 평가되면 while 루프 안의 코드가 실행됩니다.
testExpression이 다시 평가됩니다.
이 과정은 testExpression이 false가 될 때까지 계속됩니다.
testExpression이 false로 평가되면 루프가 멈춥니다.
조건에 대해 더 알아보려면 Java 관계 및 논리 연산자 방문.
while 루프 흐름도
예제 1: 1부터 5까지 숫자 표시
// 1부터 5까지 숫자 표시 프로그램
class Main {
public static void main(String[] args) {
// 변수 선언
int i = 1, n = 5;
// 1부터 5까지 while 루프
while(i <= n) {
System.out.println(i);
i++;
}
}
}
출력
1
2
3
4
5
이 프로그램이 어떻게 작동하는지:
반복
변수
조건: i <= n
작업
1번째
i = 1 n = 5
true
1 출력. i가 2로 증가.
2번째
i = 2 n = 5
true
2 출력. i가 3으로 증가.
3번째
i = 3 n = 5
true
3 출력. i가 4로 증가.
4번째
i = 4 n = 5
true
4 출력. i가 5로 증가.
5번째
i = 5 n = 5
true
5 출력. i가 6으로 증가.
6번째
i = 6 n = 5
false
루프 종료
예제 2: 양수만 합계 구하기
// 양수의 합을 찾는 Java 프로그램
import java.util.Scanner;
class Main {
public static void main(String[] args) {
int sum = 0;
// Scanner 클래스 객체 생성
Scanner input = new Scanner(System.in);
// 사용자로부터 정수 입력 받기
System.out.println("숫자를 입력하세요");
int number = input.nextInt();
// 입력된 숫자가 양수인 동안 while 루프 계속
while (number >= 0) {
// 양수만 더하기
sum += number;
System.out.println("숫자를 입력하세요");
number = input.nextInt();
}
System.out.println("Sum = " + sum);
input.close();
}
}
출력
숫자를 입력하세요
25
숫자를 입력하세요
9
숫자를 입력하세요
5
숫자를 입력하세요
-3
Sum = 39
위 프로그램에서 사용자 입력을 받기 위해 Scanner 클래스를 사용했습니다. 여기서 nextInt()는 사용자로부터 정수 입력을 받습니다.
while 루프는 사용자가 음수를 입력할 때까지 계속됩니다. 각 반복에서 사용자가 입력한 숫자가 sum 변수에 더해집니다.
사용자가 음수를 입력하면 루프가 종료되고 최종 합계가 표시됩니다.
Java do...while 루프
do...while 루프는 while 루프와 유사합니다. 그러나 do...while 루프의 본문은 테스트 표현식이 확인되기 전에 한 번 실행됩니다. 예:
do {
// 루프 본문
} while(textExpression);
여기서
루프 본문이 먼저 실행됩니다. 그런 다음 textExpression이 평가됩니다.
textExpression이 true로 평가되면 do 문 안의 루프 본문이 다시 실행됩니다.
textExpression이 다시 한 번 평가됩니다.
textExpression이 true로 평가되면 do 문 안의 루프 본문이 다시 실행됩니다.
이 과정은 textExpression이 false로 평가될 때까지 계속됩니다. 그러면 루프가 멈춥니다.
do...while 루프 흐름도
do...while 루프의 작동을 봅시다.
예제 3: 1부터 5까지 숫자 표시
// 1부터 5까지 숫자 표시 Java 프로그램
import java.util.Scanner;
// 1부터 100까지 자연수의 합을 찾는 프로그램
class Main {
public static void main(String[] args) {
int i = 1, n = 5;
// 1부터 5까지 do...while 루프
do {
System.out.println(i);
i++;
} while(i <= n);
}
}
출력
1
2
3
4
5
이 프로그램이 어떻게 작동하는지:
반복
변수
조건: i <= n
작업
i = 1 n = 5
확인 안 함
1 출력. i가 2로 증가.
1번째
i = 2 n = 5
true
2 출력. i가 3으로 증가.
2번째
i = 3 n = 5
true
3 출력. i가 4로 증가.
3번째
i = 4 n = 5
true
4 출력. i가 5로 증가.
4번째
i = 5 n = 5
true
5 출력. i가 6으로 증가.
5번째
i = 6 n = 5
false
루프 종료
예제 4: 양수의 합
// 양수의 합을 찾는 Java 프로그램
import java.util.Scanner;
class Main {
public static void main(String[] args) {
int sum = 0;
int number = 0;
// Scanner 클래스 객체 생성
Scanner input = new Scanner(System.in);
// 입력된 숫자가 양수일 때까지 do...while 루프 계속
do {
// 양수만 더하기
sum += number;
System.out.println("숫자를 입력하세요");
number = input.nextInt();
} while(number >= 0);
System.out.println("Sum = " + sum);
input.close();
}
}
출력 1
숫자를 입력하세요
25
숫자를 입력하세요
9
숫자를 입력하세요
5
숫자를 입력하세요
-3
Sum = 39
여기서 사용자가 양수를 입력하면 그 숫자가 sum 변수에 더해집니다. 이 과정은 숫자가 음수가 될 때까지 계속됩니다. 숫자가 음수이면 루프가 종료되고 음수를 더하지 않고 합계를 표시합니다.
출력 2
숫자를 입력하세요
-8
Sum is 0
여기서 사용자가 음수를 입력합니다. 테스트 조건은 false가 되지만 루프 안의 코드는 한 번 실행됩니다.
무한 while 루프
조건이 항상 true이면 루프는 무한히 실행됩니다(메모리가 찰 때까지). 예:
// 무한 while 루프
while(true){
// 루프 본문
}
무한 do...while 루프 예제:
// 무한 do...while 루프
int count = 1;
do {
// 루프 본문
} while(count == 1)
위 프로그램에서 textExpression은 항상 true입니다. 따라서 루프 본문은 무한히 실행됩니다.
for 루프와 while 루프
for 루프는 반복 횟수가 알려져 있을 때 사용됩니다. 예:
for (let i = 1; i <=5; ++i) {
// 루프 본문
}
while과 do...while 루프는 일반적으로 반복 횟수가 알려지지 않았을 때 사용됩니다. 예: