본문으로 바로가기

참고)

자바(java) 조건문은 https://codehouse.tistory.com/7, https://codehouse.tistory.com/8 에서 확인 가능하다.

 

 

자바 반복문

 

자바에서 특정 조건식을 걸어주면 해당 조건식의 결과가 (true)일동안 반복적으로 코드를 수행하고 싶을 반복문을 사용한다.

 

대표적으로 for문과, while 2가지를 사용한다.  for문은 정해진 횟수만큼 반복하고 싶을 사용하며, while문은 조건에 따라서만 반복을 수행할 사용한다.

 

 

1.  for문

 

for 문은 일정한 횟수만큼 반복할 유용하게 사용할 있다. 자바(Java)에서 거의 대부분 반복문은 for문을 사용한다.

 

기본문법은 다음과 같다.

 

  for(초기식; 조건식; 증감식) {

         // 초기식은 for 최초 한번만 수행한다.

         // 조건식이 (true)일때 해당 블록 영역에 있는 코드를 반복 수행한다.

         // 한번의 반복을 수행한 후에는 증감식을 수행한다.

  }

 

초기식은 식을 초기화하기 위하여 사용한다. for문이 실행될 최초 한번만 수행한다.

 

조건식이 참일때 for블록 안에 있는 코드를 수행하며, 한번의 반복수행이 끝날때마다 증감식을 수행한다.

 

다시 반복 처음으로 돌아와 조건식이 참일경우 계속 코드를 반복 수행한다.

 

다음 예제 코드를 보며 순서를 이해해보자.

 

예)

1
2
3
4
5
6
int sum = 0;
for(int i=0; i <= 10; i++) {
    sum = sum + i;
}
    
System.out.println(sum);
 

 

 

결과)

55

 

코드 1부터 10까지의 합을 구하는 반복문이다. 반복문을 해석하는 법은 다음과 같다.

 

  - 초기식은 int i=0; 으로 정수형 타입 변수 i 0으로 초기화 하였다.

  - 조건식은 i <= 10; 으로 현재 i 값이 10보다 작거나 같으면 아래 코드를 수행한다.

       sum = sum + i;

  - 코드를 수행하였으면 증감식 i++ 수행하여 현재 i 값을 증가시켜준 후에 처음으로 돌아간다.

 

결국 i 값을 증가시킨 (1,2,3,4,…..10) 현재 i 값을 더해 줌으로 1부터 10까지의 최종합이 sum변수에 저장되며, 55값이 출력된다.

 

여기서 유의해야할점 int i=0 부분인데, i 카운터 변수라고 한다. 그런데 해당 변수를 for 안에서 생성하고 초기화

 

였기 때문에 i변수는 for문이 끝나면 다른 코드에서 사용할 없다.  오로지 for 영역 안에서만 사용할 있다.

 

for문을 다양하게 이용하여 원하는 결과를 얻을 있다. 아래 코드의 주석을 참조하여 직접 이클립스에서 수행해보자.

 

예제)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
//100이하의 자연수 중에서 4의 배수의 합을 구하시오. 
int sum = 0;
//1부터 100까의 loop를 돌린다.
for(int i=1; i <= 100; i++) {
    //4로 나눈 나머지가 0이면 4의배수!!
    if(i % 4 == 0) {
        sum += i;
    }
}
System.out.println("1부터 100까지 4의 배수의 총합은 : "+sum);
 
 
//초항이 3이며 공차가 4인 200까지의 등차수열의 합을 구하시오.
int sum2 = 0;
//초항값으로 변수 i를 초기화 하며 증감식은 공차값으로 지정한다.
for(int i=3; i <= 200; i+=4) {
    sum2 += i;
}
 
System.out.println("초항3부터 공차가 4인 200까지의 등차수열의 합은 : " + sum2);
 

 

 

결과)

1부터 100까지 4의 배수의 총합은 : 1300

초항3부터 공차가 4인 200까지의 등차수열의 합은 : 5050

 

 

 

2.  for문 중첩

 

조건문과 마찬가지로 for문도 중첩하여 사용할 수 있다.  반복수행되는 횟수는 for문의 반복횟수를 곱한 횟수이다.

 

다음 예제와 같이 for 중첩을 사용할 있다.

 

예제)

1
2
3
4
5
6
//구구단 2단부터 4단까지의  각 결과를 출력하시오. 
for(int i=2; i<=4; i++) {
    for(int j=1; j <= 9; j++) {
        System.out.println(i + " X " + j + " = " + (i * j));
    }
}
 

 

 

결과)

2 X 1 = 2
2 X 2 = 4
2 X 3 = 6
2 X 4 = 8
2 X 5 = 10
2 X 6 = 12
2 X 7 = 14
2 X 8 = 16
2 X 9 = 18
3 X 1 = 3
3 X 2 = 6
3 X 3 = 9
3 X 4 = 12
3 X 5 = 15
3 X 6 = 18
3 X 7 = 21
3 X 8 = 24
3 X 9 = 27
4 X 1 = 4
4 X 2 = 8
4 X 3 = 12
4 X 4 = 16
4 X 5 = 20
4 X 6 = 24
4 X 7 = 28
4 X 8 = 32
4 X 9 = 36

 

 

 

 

3. while문

 

for문과 달리 지정된 횟수가 아니라 조건이 참일때 코드를 계속 반복 수행해야 한다면 while문을 사용한다.

 

기본문법은 다음과 같다.

  while(조건식){

       // 조건식이 참이라면 반복을 계속 수행한다.

  }

 

주의 해야 할점은 조건식을 특정경우에서 빠져나올 있도록(거짓, false) 해주어야 한다. 그렇지 않으면 반복을 무한히 수행하게 되는데

 

이를 무한루프라고 한다다음 예제소스를 통해 확인해보자.

 

예제)

1
2
3
4
5
6
7
8
9
10
11
12
13
int i=1
int sum=0;
 
//조건 : 100이하의 자연수
while(i<=100) {
    if( i % 2 == 0) {
        sum += i;
    }
    
    i++;
}
 
System.out.println("1부터 100까지의 짝수의 합은 : " + sum);
 

 

 

결과)

1부터 100까지의 짝수의 합은 : 2550

 

 

 

 

4. do while문

 

while문과 비슷하게 사용 한다. do 블록에서 수행할 코드를 while에서 조건식이 참인지를 수행한다.

 

while문과 차이점이라면 do블록안에 있는 코드를 먼처 수행하고 조건식이 참인지 체크한다. 최초 조건식이 거짓이라도 최소 한번은 수행된다.

 

다음 예제는 조건식을 거짓으로 셋팅해도 한번은 수행되는것을 보여주는 예제이다.

 

예제)

1
2
3
do {
    System.out.println("while문 조건식의 결과가 false이지만 do블록 하위의 코드는 최소 한번 수행된다.");
}while(false);
 
 

 

 

결과)

while문 조건식의 결과가 false이지만 do블록 하위의 코드는 최소 한번 수행된다.