본문 바로가기

자바/뇌를 자극하는 JAVA

반복문

먼저 자바에는 반복문을 만들 때 사용할 수 있는 키워드가 셋 있습니다. while, do, for 키워드가 바로 그런 키워드입니다. 이절에서는 이 키워드들을 이용하여 반복문을 만드는 방법을 알아보겠습니다. 그리고 나서 반복문의 실행 흐름을 바꾸는 기능을 하는 break 문과 continue 문의 작성 방법도 알아보겠습니다.


while 반복문

while 문의 기본 형식


while ( 조건식 ) -> true 또는 false 값을 산출할 수 있는 식

    실행부분 -> 조건식이 true일 동안 반복 실행되는 부분


실행부분은 단일 명령문일 수도 있고 블록일 수도 있습니다.(블록은 명령문이 여러개 들어가 있는 것을 말합니다)


반복문의 예

class WhileExample

 public static void main(String args[]) {

  int cnt = 0;

  while (cnt < 10) {

   System.out.println(cnt);

   cnt++;

  }

  System.out.println("Done.")

 }

}


실행결과

0

1

2

3

4

5

6

7

8

9

Done.


while 문으로 무한 루프 만들기

while 문의 조건식으로 참을 의미하는 true라는 단어를 쓰면 무한히 반복되는 반복문, 다시 말해서 무한루프(infinitive loop)를 만들 수 있습니다. 

다음은 그런 예를 보여주는 프로그램입니다.

class WhileExample

 public static void main(String args[]) {

  while (true)

   System.out.println("Hello, Java");

  }

}


이 프로그램은 무한히 "Hello, Java" 를 출력하기 때문에 강제 종료해야만 끝낼 수 있습니다.

이런 강제 종료해야만 하는 프로그램은 바람직하지 않으므로 실무에서는 이런 식으로 프로그램을 작성하면 안 됩니다.

'

do-while 반목문

do 키워드도 while 키워드처럼 반복문을 만들기 위해서 사용됩니다. 

그런데 이 키워드는 항상 while 키워드와 함께 사용되기 때문에 이 키워드로 만든 명령문은 do 문이라고도 부르기도 하고, do-while 문이라고 부르기도 합니다. 

do-while 문의 기본 형식은 다음과 같습니다.

do

 실행부분             -> 조건식이 true일 동안 반복 실행되는 부분

while ( 조건식 );   -> 조건식이 true 또는 False 값을 산출할 수 있는 식

실행부분은 단일 명령문일 수도 있고 블록일 수도 있습니다.


do-while 문은 앞에서 배웠던 while 문과는 달리, 조건식을 검사하기 전에 무조건 실행 부분을 한 번 실행합니다.


사용 예

class DoWhileExample

 public static void main(String args[]) {

  int cnt = 0;

  do {

   System.out.println(cnt);  -> 이부분과

   cnt++;                          -> 이 부분을 한 번 실행 하고 나서(업데이트식)

  } while ( cnt < 10 );        -> cnt가 10보다 작으면 계속 반복 실행합니다.

  System.out.println("Done.");

 }

}


실행결과

0

1

2

3

4

5

6

7

8

9

Done.


for 반복문

for키워드도 반복문을 만들기 위해서 사용되는 키워드입니다.

이 키워드로 만든 반복문은 주어진 회수만큼 처리를 반복하거나, 배열 항목을 순서대로 처리할 떄 적합합니다.

for 반복문의 기본 형식은 다음과 같습니다.


for ( 초기화식; 조건식; 업데이트식)

 실행부분 -> 조건식이 true 일 동안 반복 실행되는 부분


초기화식 -> 변수를 선언하고 초기화하는 식

조건식 -> 변수를 이용하여 true, false 값을 산출하는 식

업데이트식 -> 변수의 값을 바꾸는 식


for ( int cnt = 0; cnt < 10; cnt++ )

 System.out.println(cnt);

 

for문은 이렇게 초기화식, 조건식, 업데이트식 부분에서 해야 할 일이 정해져 있습니다. 하지만 자바 컴파일러는 이런 식이 실제로 어떤 일을 하는지까지는 알지 못하게 때문에, 초기화식을 실행하고 나서 조건식을 검사하고, 조건식의 결과가 true인 동안 실행부분과 업데이트식을 기계적으로 반복할 뿐입니다.


for문의 전형적인 사용 예

class ForExample

 public static void main(String args[]) {

  for ( int cnt = 0; cnt < 10; cnt++)

   System.out.println(cnt);

  System.out.println("Done.")

 }

}


실행결과

0

1

2

3

4

5

6

7

8

9

Done.


for 문에 있는 초기화식, 조건식, 업데이트식 중 일부 또는 전부는 생략할 수도 있습니다.

다음은 for문의 그런 성질을 이용하여 위 예제와 똑같은 기능을 하는 프로그램을 작성한 것입니다.


class ForExample

 public static void main(String args[]) {

  int cnt = 0;

  for ( ; cnt < 10; ) {

   System.out.println(cnt);

   cnt++;

  }

  System.out.println("Done.");

 }

}


위의 예제와 똑같은 결과가 출력됩니다. 

하지만 이런식의 프로그램의 for문은 의의가 없어지니까 실무에서는 이런 식으로 프로그램을 작성하지는 않는것이 좋겠죠.


for 문으로 무한 루프 만들기

for 문의 조건식이 생략되면 true인 것으로 간주됩니다. 

그렇기 때문에 for 문의 초기화식, 조건식, 업데이트식을 모두 생략하면 무한 루프를 만들 수 있습니다. 

다음은 그런 예를 보여주는 프로그램입니다.


class ForExample

 public static void main(String args[]) {

  for (;;)

   System.out.println("Hello, Java.");

 }

}


향상된 for 문의 작성 방법

for 문에서 반복 회수를 카운트 하는 변수는 배열의 인덱스로 사용하기에도 적합하기 때문에, for 문은 배열처리에도 많이 사용됩니다. 

다음은 for 문으로 배열 항목을 처리하는 예를 보여주는 프로그램입니다.


class ForExample

 public static void main(String args[]) {

  int arr[] = { 10, 20, 30, 40, 50 };

  for (int cnt = 0; cnt < arr.length; cnt++) {

   System.out.println(arr[cnt]);

  }

  System.out.println("Done.");

 }

}


실행결과

10

20

30

40

50

Done.


그런데 for 문의 카운트 변수가 오로지 배열의 인덱스로만 사용된다면, JDK 5.0 버전부터 지원되는 향상된 for 문 형식을 사용하는 것이 더 편리할 수 있습니다.

다음은 JDK 5.0의 향상된 for 문 형식입니다.

배열을 지원하는 향상된 for 문의 형식

 for(변수타입 변수이름 : 배열 이름)

  실행부분  -> 반복 실행되는 부분


for ( int num : num )

 System.out.println(num);


이 형식의 for 문은 배열의 항목 수만큼 실행부분을 반복하는데, 매번 반복할 때마다 배열 항목의 값을 변수에 자동으로 대입합니다. 그리고 실행부분에서는 그 변수를 사용할 수 있습니다.

다음은 향상된 for 문을 사용해서 앞에서 작성했던 위의 에제와 똑같은 기능을 하는 프로그램을 작성한 것입니다.


class ForExample

 public static void main(String args[]) {

  int arr[] = { 10, 20, 30, 40, 50 };

  for ( int num : arr) {

   System.out.println(num);

  }

  System.out.println("Done.");

 }

}


실행결과

10

20

30

40

50

Done.


하지만 향상된 for문에서는 배열 항목의 값을 가져다가 사용할 수만 있고, 배열 항목의 값을 바꿀 수는 없다는 제약이 있습니다.

'자바 > 뇌를 자극하는 JAVA' 카테고리의 다른 글

반복문을 계속하는 continue 문  (0) 2013.05.01
반복문을 빠져 나가는 break 문  (0) 2013.05.01
switch 조건문  (0) 2013.04.28
if 조건문  (0) 2013.04.28
배열의 선언, 생성, 이용  (0) 2013.04.28