Java 반복문
Java의 반복문은 특정 코드를 여러 번 반복 실행하는 구조를 제공한다.
대표적인 반복문으로는 for 문, while 문, do-while 문이 있다.
반복문을 사용하면 코드의 재사용성을 높이고, 반복 작업을 효율적으로 처리할 수 있다.
for
for 문은 반복 횟수가 정해져 있거나, 반복 조건이 명확할 때 유용하게 사용된다.
초기화, 조건식, 증감식을 한 줄에 작성할 수 있어 반복 범위를 명확하게 표현할 수 있다.
기본 구조
for (초기화; 조건식; 증감식) {
// 반복할 코드
}
- 초기화: 반복을 시작하기 전에 한 번만 실행되는 부분이다. 주로 반복 제어 변수의 초기값을 설정한다. (int i = 0;)
- 조건식: 각 반복 전에 검사되는 조건이다. 이 조건이 true일 때만 블록이 실행되며,
조건이 false가 되면 반복이 종료된다. (i < 5;) - 증감식: 블록 실행이 끝난 후 반복 제어 변수를 변경하는 부분이다. (i++)
예제
for (int i = 0; i < 5; i++) {
System.out.println("Number: " + i);
}
위 예제에서는 i가 0부터 4까지 반복되며, "Number: i"가 출력된다.
- 초기화: int i = 0;로 반복 변수 i가 0으로 초기화된다.
- 조건식 검사: i < 5가 true일 때 블록을 실행한다. false면 반복을 종료한니다.
- 코드 블록 실행: System.out.println("i = " + i);가 실행된다.
- 증감식: i++가 실행되어 i가 1 증가한다.
- 반복: 조건식 검사로 돌아가고, false가 될 때까지 반복한다.
정수의 합 계산
int sum = 0;
for (int i = 1; i <= 10; i++) {
sum += i; // sum에 i를 더함
}
System.out.println("Sum of 1 to 10: " + sum);
배열 요소 출력
int[] numbers = {1, 2, 3, 4, 5};
for (int i = 0; i < numbers.length; i++) {
System.out.println("Element at index " + i + ": " + numbers[i]);
}
중첩 for문
for문을 충접하여 다차원 배열을 탐색하거나 구구단과 같은 패턴을 출력할 수 있다.
for (int i = 1; i <= 3; i++) {
for (int j = 1; j <= 3; j++) {
System.out.print(i * j + " ");
}
System.out.println(); // 한 줄 띄우기
}
// 출력
1 2 3
2 4 6
3 6 9
무한 루프
조건식을 생략하거나 항상 true로 설정할 경우 무한 루프를 만들 수 있다.
for (int i = 0; ; i++) {
System.out.println("Infinite loop");
if (i == 10) break; // break를 통해 루프 탈출
}
여기서 조건식을 비워 두면 for 문은 계속 반복된다. 루프 탈출을 위해 break를 사용했다.
for 문의 생략 가능 요소
for 문의 초기화, 조건식, 증감식은 모두 생략할 수 있지만, 세미콜론은 반드시 포함해야 한다.
int i = 0;
for ( ; i < 5; ) {
System.out.println("i = " + i);
i++;
}
이 구조에서는 조건식만 남겨두어 while 문처럼 사용할 수 있다.
향상된 for 문 (Enhanced for loop)
향상된 for 문은 배열이나 컬렉션에 있는 모든 요소를 하나씩 꺼내서 사용할 때 편리하다.
자바 5부터 도입되었으며, 요소에 대한 순차 접근이 목적일 때 주로 사용된다.
구조
for (타입 변수명 : 배열 또는 컬렉션) {
// 반복할 코드
}
예제
int[] numbers = {1, 2, 3, 4, 5};
for (int number : numbers) {
System.out.println("Number: " + number);
}
위 예제는 number 배열의 각 요소를 number에 대입하여 하나씩 출력한다.
while
while 문은 조건식이 true인 동안 반복을 수행하는 구조이다.
조건이 처음부터 false라면 한번도 실행되지 않으며, 조건을 먼저 평가한 후에 블록을 실행하기 때문에
주로 반복 횟수가 정해지지 않은 경우에 사용된다.
기본 구조
while (조건식) {
// 반복할 코드
}
- 조건식 검사: 조건식이 처음에 true인지 확인한다. true이면 다음 단계로 넘어가고, false면 반복문을 종료한다.
- 코드 블록 실행: 조건이 true일 때 반복문 안의 코드 블록이 실행된다.
- 조건식 재확인: 코드 블록 실행이 끝난 후 조건식을 다시 검사한다.
조건식이 true일 동안 반복하고, false면 종료한다.
예를 들어, i가 0에서 시작하여 4까지 반복하는 while문은 다음과 같다.
int i = 0;
while (i < 5) {
System.out.println("i = " + i);
i++;
}
// 출력
i = 0
i = 1
i = 2
i = 3
i = 4
예제
숫자 카운팅
int count = 1;
while (count <= 5) {
System.out.println("Count: " + count);
count++;
}
// 출력
Count: 1
Count: 2
Count: 3
Count: 4
Count: 5
사용자 입력 확인
Scanner scanner = new Scanner(System.in);
String input = "";
while (!input.equals("exit")) {
System.out.print("Type 'exit' to quit: ");
input = scanner.nextLine();
}
System.out.println("Exited the loop.");
무한 루프
while 문에 true를 설정하면 조건이 항상 참이므로 무한 루프를 만들 수 이싿.
break 문으로 탈출하는 방식도 사용할 수 있다.
while (true) {
System.out.println("Infinite loop");
break; // break를 사용하여 루프 탈출
}
do-while
do-while 문은 while 문과 유사하지만, 조건식과 관계없이 한 번은 반드시 실행된다는 점이 다르다.
조건식을 반복 블록 끝에 평가하므로, 최소 한 번은 반복을 보장하는 구조이다.
기본 구조
do {
// 반복할 코드
} while (조건식);
- 코드 블록 실행: 먼저 {} 안의 코드 블록이 한 번 실행된다.
- 조건식 평가: 코드 블록이 실행된 후 while 키워드 뒤의 조건식이 평가된다.
- 조건식이 true면 코드 블록이 다시 실행되고, 이 과정이 조건이 false가 될 때까지 반복된다.
- 조건식이 false면 반복문이 종료된다.
예제
int i = 0;
do {
System.out.println("Number: " + i);
i++;
} while (i < 5);
위 예제는 i가 5보다 작은 동안 "Number: i"를 출력합니다. 조건이 false라면 실행이 중단된다.
사용자 입력 반복 검사
사용자에게 최소 한 번 입력을 요구하고,
특정 조건을 만족할 때까지 계속 입력을 반복할 때 유용하다.
Scanner scanner = new Scanner(System.in);
String input;
do {
System.out.print("Type 'exit' to quit: ");
input = scanner.nextLine();
} while (!input.equals("exit"));
System.out.println("Exited the loop.");
메뉴 표시 및 선택 실행
메뉴를 출력하고 선택을 받아 특정 작업을 수행하는 경우에도 적합하다.
사용자가 종료를 선택하지 않으면 메뉴가 계속 반복된다.
int choice;
do {
System.out.println("Menu:");
System.out.println("1. Option 1");
System.out.println("2. Option 2");
System.out.println("3. Exit");
System.out.print("Choose an option: ");
choice = scanner.nextInt();
switch (choice) {
case 1:
System.out.println("Option 1 selected.");
break;
case 2:
System.out.println("Option 2 selected.");
break;
case 3:
System.out.println("Exiting...");
break;
default:
System.out.println("Invalid choice. Try again.");
}
} while (choice != 3);
데이터 유효성 검사
입력이 반드시 특정 기준을 충족해야 하는 경우에도 사용할 수 있다.
int age;
do {
System.out.print("Enter your age (must be >= 0): ");
age = scanner.nextInt();
} while (age < 0);
System.out.println("Valid age entered: " + age);
while 문과 do-while 문 비교
do-while 문은 while 문과 달리 조건식의 참/거짓과 상관없이 최소 한 번은 코드 블록을 실행한다.
특징 | while 문 | do-while 문 |
최소 실행 횟수 | 조건이 true일 때만 실행 (0회 가능) | 코드 블록이 최소 1회 실행 |
조건 평가 시점 | 코드 블록을 실행하기 전에 조건 평가 | 코드 블록을 실행한 후 조건 평가 |
주요 사용 사례 | 반복 실행 횟수가 0일 수도 있는 경우 | 코드 블록이 반드시 1회 실행돼야 하는 경우 |
다중 반복문
반복문 안에 또 다른 반복문을 포함한 구조를 뜻한다.
이를 통해 중첩된 데이터 구조를 다루거나 이중 이상의 반복이 필요한 작업을 수행할 수 있다.
다중 반복문은 보통 배열, 행렬, 테이블과 같은 복잡한 데이터 구조에서 많이 사용된다.
예시
이중 for 문
for (int i = 0; i < 3; i++) { // 외부 반복문
for (int j = 0; j < 2; j++) { // 내부 반복문
System.out.println("i: " + i + ", j: " + j);
}
}
// 출력
i: 0, j: 0
i: 0, j: 1
i: 1, j: 0
i: 1, j: 1
i: 2, j: 0
i: 2, j: 1
여기서, 외부 반복문 (i가 제어)과 내부 반복문 (j가 제어)이 있다.
외부 반복문이 한 번 실행될 때마다, 내부 반복문이 전체적으로 수행된다.
이중 배열 (2D 배열)
이중 배열은 행과 열로 구성된 데이터 구조이다.
다중 반복문을 통해 이중 배열의 모든 요소에 접근할 수 있다.
int[][] matrix = {
{1, 2, 3},
{4, 5, 6},
{7, 8, 9}
};
for (int i = 0; i < matrix.length; i++) { // 행 반복
for (int j = 0; j < matrix[i].length; j++) { // 열 반복
System.out.print(matrix[i][j] + " ");
}
System.out.println(); // 각 행이 끝날 때 줄바꿈
}
// 출력
1 2 3
4 5 6
7 8 9
별 모양 만들기
다중 반복문을 사용하여 별 모양의 삼각형이나 정사각형을 만들 수 있다.
for (int i = 1; i <= 5; i++) { // 행을 담당하는 반복문
for (int j = 1; j <= i; j++) { // 별의 개수를 담당하는 반복문
System.out.print("*");
}
System.out.println();
}
// 출력
*
**
***
****
*****
break와 continue
반복문을 제어하기 위해 break와 continue 키워드를 사용할 수 있다.
- break: 반복문을 즉시 종료하고, 반복문 이후의 코드로 이동한다.
- continue: 반복문의 현재 순서를 건너뛰고, 다음 순서로 이동한다.
for (int i = 0; i < 5; i++) {
if (i == 3) {
break; // i가 3이면 반복문 종료
}
if (i == 1) {
continue; // i가 1이면 다음 순서로 건너뜀
}
System.out.println("Number: " + i);
}
이 예제는 i가 1일 때 출력하지 않고 건너뛰며, i가 3일 때 반복문을 종료한다.
'Java' 카테고리의 다른 글
Java 캡슐화 (Encapsulation) (0) | 2024.11.17 |
---|---|
Java 클래스와 메서드, 객체 (Class, Object, Method) (1) | 2024.11.16 |
Java 조건문 (if, if else, switch case) (0) | 2024.11.14 |
Java 문자열 (String) (1) | 2024.11.14 |
Java 배열 (Array) (0) | 2024.11.13 |