[Java] java 반복문
목차
1. 반복문 - while문
조건이 참(true)인 동안 반복 수행하기
- 주어진 조건이 참(true)인 동안 지정된 수행문을 반복적으로 수행하는 제어문이다.
- 조건이 맞지 않으면 반복하던 수행을 멈춘다.
- 조건은 주로 반복 횟수나 값의 비교 결과에 따라 true/false로 판단된다.
- 예) 달리는 자동차, 일정 횟수만큼 돌아가는 나사못, 특정 온도까지 가동되는 에어컨 등
while문의 동작
수행문을 수행하기 전에 조건을 먼저 체크하고, 그 결과가 true인 동안 반복 수행한다.

while문 예제
1부터 10까지 더하여 그 결과를 출력해 봅시다.
package ch17;
public class WhileTest {
public static void main(String[] args) {
int num = 1;
int sum = 0;
while( num <= 10) {
sum += num;
num++;
}
System.out.println(sum);
System.out.println(num);
}
}
무한 반복할 때
while(true){
.......
}
2. 반복문 - do-while문
조건과 상관없이 한 번은 수행문을 수행
- while문이 조건을 먼저 체크하고 반복한다면, do-while문은 조건과 상관없이 수행을 한 번 하고 나서 조건을 체크한다.
- 조건이 맞지 않으면(true가 아니면) 더 이상 수행하지 않는다.

do-while문 예제
입력받는 모든 숫자의 합을 구하는 예제입니다. 단, 입력이 0이 되면 반복을 그만하고 합을 출력합니다.
package ch18;
import java.util.Scanner;
public class DowhileTest {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int input;
int sum = 0;
do {
input = scanner.nextInt();
sum += input;
}while(input != 0);
System.out.println(sum);
}
}
3. 반복문 - for문
for문의 수행 순서

for문 예제 (while과 비교)
1부터 10까지 더한 결과를 출력하세요.
package ch19;
public class ForTest {
public static void main(String[] args) {
int count =1;
int sum = 0;
for( int i = 0 ; i<10; i++, count++) { //10번
sum += count;
//count++;
}
System.out.println(sum);
int num = 1;
int total = 0;
while( num <= 10) {
total += num;
num++;
}
System.out.println(total);
}
}
각 반복문은 주로 언제 사용하나요?

for문의 문장들은 생략 가능합니다
| 생략 항목 | 사용 상황 |
|---|---|
| 초기화식 생략 | 이미 이전에 값이 초기화되어 for 내부에서 값을 지정할 필요가 없는 경우 |
| 조건식 생략 | 반복 수행에 대한 조건이 수행문 내부에 있는 경우 |
| 증감식 생략 | 증감식 연산이 복잡하거나 다른 변수의 연산 결과값에 따라 결정되는 경우 |
| 무한 반복 | 세 항목을 모두 생략하는 경우 |
-
초기화식 생략
-
조건식 생략
-
증감식 생략
-
무한 반복
참고: i+1과 i++의 차이
i+1 과 i++은 다릅니다.
i+1 자체는 i 값이 증가되지 않습니다. 증가하기 위해서는 대입연산자를 써야합니다.
하지만 i++은 i = i+1, i+=1 과 동일한 의미입니다.
따라서 값을 1씩 증가하려고 한다면 i++을 사용하세요
4. 반복문이 여러 번 포개진 중첩 반복문
중첩 반복문이란?
- 반복문 내부에 또 다른 반복문이 있는 구조이다.
- 여러 겹으로 반복문을 겹쳐서 구현할 수 있다. (단, 수행 시간에 문제가 발생할 수 있다.)
- 외부 반복문과 내부 반복문 간의 변수 값 변화에 유의하며 구현해야 한다.
구구단을 for와 while로 구현해 보자
package ch20;
public class NestedLoopTest {
public static void main(String[] args) {
int dan = 2;
int count = 1;
for( dan = 2; dan <= 9; dan++) {
for(count = 1; count <=9; count++) {
System.out.println( dan + "X" + count + "=" + dan * count);
}
System.out.println();
}
dan = 2;
while( dan <= 9 ) {
count = 1;
while (count <= 9) {
System.out.println( dan + "X" + count + "=" + dan * count);
count++;
}
dan++;
System.out.println();
}
}
}
5. 중간에 멈추는 break문, 무시하고 계속 진행하는 continue문
break문 사용하기
- 감싸고 있는 제어문의 블록을 빠져나오는 기능. (switch문에서도 사용)
- 반복문에서는 주로 조건문(if)과 같이 사용하여, 조건에 해당하는 경우 반복 수행을 멈추고 반복문 외부로 수행이 이동한다.
- 여러 반복문이 중첩되어 있는 경우엔 break문이 포함된 반복문만 빠져나온다.
break문 예제
1부터 숫자를 더하여 100이 넘는 순간의 그 숫자와 합을 출력하세요.
package ch21;
public class BreakTest {
public static void main(String[] args) {
int sum = 0;
int num;
for( num = 1; ; num++) {
sum += num;
if( sum >= 100) break;
}
System.out.println(sum);
System.out.println(num);
}
}
continue문 사용하기
반복문 내부에서 조건문(if)과 같이 사용하며, 조건이 맞는 경우(true이면) 이후 반복문 블록 내부의 다른 수행문들을 수행하지 않는다.
continue문 예제
1부터 100까지 숫자 중 3의 배수를 출력하세요.
package ch21;
public class ContinueTest {
public static void main(String[] args) {
int num;
for( num = 1; num <= 100; num++) {
if( (num % 3) != 0) continue;
System.out.println(num);
}
}
}