[Java] 반복문

Nakjoo·2022년 12월 23일
0

[SEB_BE_43]

목록 보기
6/29

1. 반복문

반복문은 코드들이 반복적으로 실행되도록 할 때 사용되며, 반복문의 종류로는 for문, while문, do-while문이 있다. for문은 반복횟수를 알고 있을 때 주로 사용하고, while문은 조건에 따라 반복할 때 주로 사용한다.

1.1. for문

for문은 조건식이 참인 동안 주어진 횟수만큼 실행문을 반복적으로 수행한다.

public class Main {
  public static void main(String[] args) {
    int sum = 0;
    // for (초기화; 조건식; 증감식)
    for(int num = 0; num < 10; num++) {	
      sum += num;
    }
    System.out.println(sum); // 1~9의 합인 45가 출력된다.
  }
}
  • 초기화for문이 시작할 때 최초 한 번만 수행되며, 사용할 변수의 초깃값을 정한다.
  • 조건식은 계속 반복할지 여부를 결정하는 조건이다. 조건식 안의 값이 true라면 실행문을 실행시키고, false라면 더 이상 블록을 실행시키지 않고 끝낸다.
  • 증감식은 반복 횟수를 결정하는 규칙이다. 변수에 값을 더하거나 곱하는 등 수행 방식을 지정한다. ++ 는 반복문에서 자주 쓰는 증감연산자로, 피연산자의 값을 1 증가시킨다.

1.2. 향상된 for문 (Enhanced for문)

향상된 for문은 반복실행을 하기 위해 카운터 변수와 증감식을 사용하지 않는다. 배열 및 컬렉션 항목의 개수만큼 반복하고 자동적으로 for문을 빠져나간다.

public class EnhancedForLoop {
  public static void main(String[] args) throws Exception {
    String[] names = {"kimcoding", "javalee", "ingikim"};
    for(String name : names) {
      System.out.println(name + "님은 자바를 공부중 입니다.");
    }
  }
}
/*
kimcoding님은 자바를 공부중 입니다.
javalee님은 자바를 공부중 입니다.
ingikim님은 자바를 공부중 입니다.
*/

위와 같이 for문의 괄호(()) 안에는 배열에서 꺼낸 항목을 저장할 변수 선언, 콜론(:), 그리고 사용할 배열이 작성된다. 향상된 for문을 처음 실행할 때, names 배열에서 가져올 첫 번째 값이 존재하는지 확인하고, 값이 존재하면 해당값을 변수인 name에 저장한다. 그리고 그 안의 실행문을 실행한다. 블록 내부의 실행문이 모두 실행 되면 다시 names 배열에서 가져올 값이 있는지 확인 하고 만약 가져올 다음 항목이 없다면 자동적으로 for문이 종료된다.

1.3. while문

for문이 정해진 횟수를 반복한다면, while문은 조건식이 true일 경우에만 계속해서 반복한다.

for문과 while문은 초기화, 증감식의 위치만 다를 뿐 상호 대체가 가능하다.

int num = 0, sum = 0; // 초기화
while(num <= 10) { // 조건식
  sum += num; // 실행문
  num++;
}
System.out.println(sum);

1.4. do while문

do-while문은 조건식에 의해 반복 실행한다는 점에서는 while문과 동일하다. while문은 시작 할 때부터 조건식을 검사하여 블록 내부를 실행할지 결정하지만, 경우에 따라서는 블록 내부의 실행문을 우선 실행시키고 실행 결과에 따라서 반복 실행을 계속 할지 결정하는 경우도 있다.

do {
  (1)실행문 //처음 한 번은 무조건 실행
} while((2)조건식);

do-while문이 처음 실행될 때 (1)실행문을 먼저 실행한다. (1)실행문이 모두 실행되면 (2)조건식을 평가한다. 그리고 그 결과가 true이면 (1)실행문 → (2)조건식으로 반복 실행을 하고, false이면 do-while문을 종료한다.

1.5. break문

break문은 반복문인 for문, while문, do-while문을 실행 중지할 때 사용된다. 또한 이전에 학습한 switch문에서도 break문을 사용하여 switch문을 종료한다.

break문은 대개 if문과 같이 사용되며, if문의 조건식에 따라 for / while문을 종료할 때 사용한다.

만약, 반복문이 중첩되어 있을 경우 break문은 가장 가까운 반복문만 종료하고, 바깥쪽 반복문에는 영향을 끼치지 않는다.

public class Main {
    public static void main(String[] args) {
        Outer : for (int i = 3; i < 10; i++) {
            for (int j = 5; j > 0; j--) {
                System.out.println("i " + i + " j "+ j);
                if (i == 5) {
                    break Outer;
                }
            }
        }
    }
}
/*
i 3 j 5
i 3 j 4
i 3 j 3
i 3 j 2
i 3 j 1
i 4 j 5
i 4 j 4
i 4 j 3
i 4 j 2
i 4 j 1
i 5 j 5
*/

위 코드에서 바깥 for문은 3부터 9까지 반복하고, 중첩된 안쪽 for문은 5부터 1까지 반복한다. 바깥 for문에서 변수 i의 값이 5가 되면 바깥 for문까지 빠져나올 수 있도록 해당 for문에 Outer라는 라벨을 붙이고, 이를 break문에 사용했다. 이런 식으로 레이블문을 쓰면, 중첩된 for문 안에서도 바깥쪽 for문까지 완벽하게 빠져나올 수 있다.

1.6. continue문

continue문은 break문과는 달리 반복문을 종료하지 않고 다음차례로 넘어가 반복문을 수행한다.

아래 예제는 1~10까지의 수 중 홀수만 출력하는 코드다. if문을 사용해 짝수인 경우는 다시 for문의 증감문으로 이동해 다음 반복을 수행하고, 홀수만 출력한다.

public class Main {
    public static void main(String[] args) throws Exception {
        for (int i = 0; i < 10; i++) {
            if (i % 2 == 0) { //나머지가 0일 경우는
                continue; //다음 반복으로 넘어간다.
            }
            System.out.println(i); //홀수만 출력
        }
    }
}
/*
1,3,5,7,9
*/

0개의 댓글