프로그램 흐름을 제어하는 제어문 중 하나인 반복문은 특정 실행 코드를 반복적으로 수행시키는 기능을 합니다. 자바에서는 반복문을 통해 코드의 효율성을 높일 수 있으며, 크게 두 종류의 반복문이 있습니다: for 문과 while 문 (및 do-while 문).
for 문은 반복 횟수가 정해져 있을 때 주로 사용됩니다. 기본적인 형태는 다음과 같습니다:
for (초기식; 조건식; 증감식) { // 반복적으로 실행시키고자 하는 코드 블럭 }
true일 때 반복을 실행하고, false일 때 반복문을 종료합니다.Tip!
for문 안에서 초기식, 조건식, 증감식 각각 생략 가능하지만, 대부분의 경우 생략하지 않고 사용합니다. 생략할 경우while문을 사용하는 것이 일반적입니다.
// 10번 반복하는 예제 for (int i = 0; i < 10; i++) { System.out.println("안녕하세요" + i); } // 1부터 5까지 출력하는 예제 for (int i = 1; i <= 5; i++) { System.out.print(i + " "); }
while 문은 조건식이 true일 동안 반복을 실행합니다. 기본적인 형태는 다음과 같습니다:
[초기식;] while (조건식) { // 반복적으로 실행시키고자 하는 코드 블럭 [증감식 or 분기문]; }
import java.util.Scanner; public class B_while { public static void main(String[] args) { Scanner sc = new Scanner(System.in); // 사용자가 0을 입력할 때까지 반복해서 숫자를 입력받아 그대로 출력하는 예제 while (true) { int n = sc.nextInt(); if (n == 0) { break; } else { System.out.println(n); } } // 1에서부터 10000 사이의 홀수만을 출력하는 예제 int i = 1; while (i <= 10000) { if (i % 2 == 1) { System.out.println(i); } i++; } // 1부터 랜덤값(1~100) 사이의 합계 구하는 예제 int sum = 0; int num = (int) (Math.random() * 100) + 1; i = 1; while (i <= num) { sum += i; i++; } System.out.println("1부터 " + num + "까지의 합: " + sum); // 사용자가 입력한 문자열의 짝수 자리 글자만 출력하는 예제 System.out.print("문자열 입력: "); String str = sc.next(); i = 1; while (i < str.length()) { System.out.println(str.charAt(i)); i += 2; } } }
do-while 문은 처음에 무조건 실행 코드를 한 번 실행하고 조건문을 검사하는 반복문입니다. 기존의 for / while 문과의 차이점은 첫 실행 시 조건 검사 없이 무조건 실행한다는 점입니다.
do { // 실행할 코드 블럭 } while (조건식);
import java.util.Scanner; public class C_do_while { public static void main(String[] args) { Scanner sc = new Scanner(System.in); // 사용자가 입력한 수를 계속해서 더하는 프로그램. 단, 사용자가 0을 입력하면 종료 int num; int sum = 0; System.out.println("숫자 입력:"); do { num = sc.nextInt(); sum += num; } while (num != 0); System.out.println("합: " + sum); } }
break 문은 반복문이나 switch 문 안에서 사용되는 분기문으로, break가 실행되는 순간 현재 속해 있는 가장 가까운 반복문 또는 switch 문을 강제로 탈출합니다.
import java.util.Scanner; public class D_break { public static void main(String[] args) { Scanner sc = new Scanner(System.in); // 랜덤값(1~100) 발생시키고 그 랜덤값을 출력해보기 // 단, 발생한 값이 3의 배수(3으로 나누면 0)일 경우 반복문 종료 while (true) { int num = (int) (Math.random() * 100) + 1; System.out.println(num); if (num % 3 == 0) { break; } } // 사용자에게 문자열을 입력받아 해당 문자열의 길이를 출력(과정 반복) // 단, 사용자가 입력한 문자열이 "exit"일 경우 반복문을 탈출 String str; while (true) { System.out.print("영어 문자 입력: "); str = sc.next(); if (str.equals("exit")) { break; } System.out.println(str.length()); } sc.close(); } }
continue 문은 반복문 안에서 사용되는 구문으로, continue가 실행되면 해당 반복문의 나머지 코드를 실행하지 않고 곧바로 다시 반복문의 상단으로 이동합니다.
import java.util.Scanner; public class E_continue { public static void main(String[] args) { Scanner sc = new Scanner(System.in); // 1부터 100까지의 총 합계 // 단, 6의 배수값은 빼고 int sum = 0; for (int i = 1; i <= 100; i++) { if (i % 6 == 0) { continue; } sum += i; } System.out.println("1부터 100까지 수 중, 6의 배수값은 뺀 총합: " + sum); int i = 0; while (true) { if (i < 10) { i++; continue; } break; } } }