반복문이란
for
문과 while
문 그리고 do ~ while
문이 있다.for문의 형식은 다음과 같다. 초기값이 조건식에 위배되지 않을 경우 실행 코드를 한 바퀴 돌게 된다. 이후 증감식을 통해 얻어진 값으로 다시 한번 조건식에 위배되는지 확인한다. 만약 위배되지 않을 경우 이전 과정을 반복하며 위배될 경우에 반복문이 끝남.
예시
int sum = 0;
for (int i = 0; i < 10; i++) {
sum += (i + 1);
}
System.out.println(sum);
line number 8에 디버그 모드를 체크하면 라인넘버 바로 오른 쪽에 빨간 원이 생긴다. 이상태에서 디버그 실행을 한다면 위 그림처럼 파란 줄이 뜨면서 아래 디버그 창이 올라온다.
디버그 창 왼쪽은 콜스텍이라고 해서 현재 어떤 메소드가 실행되었고 이 메소드를 호출할 때 까지 어떤 메소드들이 이전에 실행되었는지를 보여준다.
그 오른쪽에 있는 값들은 실제로 파란색으로 표시된 라인을 실행하기 전에 내가 참조할 수 있는 객체나 변수의 값들을 확인할 수 있는 창이다.
브레이크 포인트에서 멈춘 후 실행은 어떻게 하냐, 디버그창 맨 위에나 옆에 보면 resume program 이라는 버튼이 있다. 버튼을 누르면 브레이크 포인트를 지나서 쭉 실행하다가 그 다음 브레이크 포인트에서 멈춘다.
위 형식의 for 반복문 이외에도 아래와 같은 for-each문을 작성할 수도 있다. 앞서 배운 배열이나, Collection등에 사용이 가능하다.
[코드스니펫] for - each문 - Main 함수
예시
public class Main {
public static void main(String[] args) {
String[] days = {"Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday"};
for (String day : days) {
System.out.println(day);
}
}
}
for-each문은 배열의 값들을 하나하나 변수에 담아서 출력한다고 생각하면 된다.
예시
int i = 0;
int sum = 0;
while (i < 10) {
sum += i + 1;
i += 1;
}
System.out.println(sum);
int i = 0;
while (i < 10){
if (i==5){
break;
}
i += 1;
}
System.out.println(i);
while문 내부에 if문을 확인하면 '변수 i가 5일 경우 break를 한다' 라는 것을 확인할 수 있다. 즉, break는 반복문을 더 이상 실행하지 않고 끝내는 역할을 한다.
for(int i=0 ; i<10 ; i++){
if (i == 5){
continue;
}
System.out.println(i);
}
숫자 5만 빼고 0부터 9까지 출력이 됩니다. 즉, continue가 있을 경우 아래의 코드를 실행하지 않고 다시 반복문의 시작 부분으로 돌아가는 것!
do-while문과 while문의 차이를 예제를 통해 알아보자.
int i = 1;
int result = 0;
do {
result += i;
i += 1;
} while (i < 2);
System.out.println(result);
do에서 Statement 를 한 번 실행하고 그 다음 조건을 확인한다.
조건을 만족하면 do로 다시 돌아간다. 그래서 처음에 무조건 한 번은 실행한다.
1부터 30까지의 숫자를 짝수와 홀수를 구분하여 합산하는 로직 구현하기
int sumEven = 0, sumOdd = 0;
for (int i = 1; i <= 30; i++) { // i < 31 대신 i <= 30 사용
if (i % 2 == 0) {
sumEven += i;
} else {
sumOdd += i;
}
}
System.out.println("Sum of even numbers: " + sumEven);
System.out.println("Sum of odd numbers: " + sumOdd);