반복문은 코드가 반복해서 실행되도록 한다. (시작점과 어디까지 순회할건지 정해서)
반복문에는 for문 , while문 , do-while문 등이 있다.
for문과 while문은 서로 변환이 가능한데, for문은 설정한 횟수만큼 반복 하고 for문은 설정한 조건에 따라 사용한다.
for문
for문은 조건식이 성립하는 범위에서만큼 반복하여 실행문을 실행한다.
for (초기화; 조건식; 증감식)
for 조건문 내용은 위와 같다.

위 의 for문 예시를 보면 다음과 같이 설명할 수 있다.
for ()의 소괄호()는 조건문으로, 순서대로 int i = 1; (초기값), i <= 10; (언제까지), i++ (증감식으로)가 적혀있다.
그 아래 중괄호{}는 실행문으로 무엇을 할지를 알 수 있다.
초기값은 sum = 0, i = 1으로
실행순서는 다음과 같다.
1. i<=10; (조건 확인) :
2. sum += i; (조건에 부합하다면 실행)
3. i++ (증가하여 )
1번의 조건식이 성립하는 동안 반복한다. (성립하지 않으면 멈춘다.)
즉 요약하자면 위 for문은 i가 10이될때까지 한 회에 i가 1씩 증가해서 sum에 더한다.
sum은 1+2+3+4+5+6+7+8+9+10를 계산하여 55로 출력된다.
주의 할 점은,
i의 작동 범위는 블록 안에서만 (블록스코프) 스코프 지나면 지워진다는 것이다.
스코프 안의 i와 바깥 i는 다른 조건이다.

스코프를 사용하는 이유는 사용함으로써 라이프사이클이 끝나면 가비지컬렉터가 지워
메모리를 더 효율적으로 운용하기 위함이다.
while문
for문이 정해진 횟수만큼 반복 한다면, while문은 조건식이 true일 경우에 계속해서 반복한다.
(초기화);
while(조건식) {
실행문; //조건식이 참인 동안 실행
증감식;
}
while문 구조를 한글로 설명하면 위와 같다. 조건식이 true라면 초기값을 실행문에 대입하여(처음만!) 조건식이 true 동안 만큼 실행문을 반복한다.
단, while문 안에는 초기화를 안에 넣을 수 없다. 초기화가 같이 반복 되기 때문이다.
또한 증감식을 가장 마지막에 적어야 실수를 줄일 수 있다.
증감식을 while문의 시작 부분에 작성하면, 반복이 발생하기 전에 증감이 수행되기 때문이다.
이는 종종 무한루프를 유발할 수 있다.
예를 들어, 증감이 먼저 실행되면서 조건을 충족하지 못하게 되어 무한 루프에 빠질 수 있기 때문이다.
반면에 증감식을 while문의 끝 부분에 작성하면, 반복이 발생하기 전에 조건을 평가하고,
조건이 충족되면 증감이 수행되어 이러한 종류의 오류를 방지할 수 있다.
do-while문
do-while문은 while문처럼 조건에 따라 반복 실행하지만 순서는 while문과 반대로 실행문을 우선 실행시키고 결과에 따라 조건식으로 실행 여부를 결정하는 반복문이다.
do {
(1)실행문 //처음 한 번은 무조건 실행
} while((2)조건식);
순서는 다음과 같다.
1. (1) 실행문을 먼저 실행합니다.
2. (1) 실행문이 모두 실행되면 (2) 조건식을 평가한다.
3. 그리고 그 결과가 true이면 (1) 실행문 → (2) 조건식으로 반복 실행을 하고,
false이면 do-while문을 종료한다.
import java.util.Scanner;
public class Main {
public static void main(String args[]){
int input = 0, randomNum = 0;
randomNum = (int)(Math.random() * 10) + 1; // 1 ~ 10 임의의 수를 생성
Scanner scanner = new Scanner(System.in);
do{
System.out.println("1과 10 사이의 정수를 입력하세요");
input = scanner.nextInt();
if(input > randomNum) {
System.out.println("더 작은 정수를 입력하세요");
} else if (input < randomNum) {
System.out.println("더 큰 정수를 입력하세요");
}
} while(input != randomNum);
System.out.println(randomNum +" 정답입니다!");
}
}
public class Main {
public static void main(String[] args) {
for (int i = 0; i < 10; i++){
for(int j = 0; j < 10; j++){
System.out.printf("현재 변수 i의 값은 : %d, 현재 변수j의 값은 : %d%n",i, j);
}
}
}
}
'java > 제어문(Control Flow Statements) - 반복문' 카테고리의 다른 글
| break문과 continue문 (0) | 2024.04.05 |
|---|