티스토리 뷰

안녕하세요 ㅎ

중3이 되는 바람에 제대로 포스팅을 하지 못했습니다 ;

그래도 제 java공부는 게속 이어갑니다!


아무튼 이번에는 무한루프와 그 유용성에 대해 알아보겠습니다


제목에 있는 한자와 영어 無限Loop, 다들 아시죠?

'무한'이란건 말그대로 한이 없다 라는 뜻입니다

java에서는 반복문의 반복 조건이 true로 되어 있을경우 무한 루프가 되지요


while(true)

{

.....

}


또는


do

{

.....

}while(true)


또는


for( ; ; )

{

.....

}


이렇게 반복 조건 부분에 true를 집어넣으면 무한루프가 형성되게 됩니다

보시면 아시다싶이 for문은 true를 넣지 않고 공백으로 둬도 무한루프가 되므로 이렇게 하는것이 일반적이라 합니다


이런 무한루프는 존재 자체만으로는 의미를 생각할 수 없지만 break문을 만나서 사용하는 것이 일반적인 무한루프의 사용법이라 생각됩니다

아래 최소 공배수를 구하는 예제를 보겠습니다


class EndlessLoop
{
  public static void main(String[] args)
  {
    System.out.println("7과 15의 최소 공배수를 찾고 있습니다");

    int M=1;
    do
    {
      if(M%7==0 && M%15==0)
        break;
      M++;
    }while(true);

    System.out.println("최소 공배수 :"+M);
  }
}


EndlessLoop.java


7과 15의 최소 공배수를 구하는 예제입니다 (제가 응용해서 만들어 봤어요)

int M=1;으로 변수를 선언하고 있습니다

그리고 do~while문으로 최소 공배수를 찾고 있는대요


if(M%7==0 && M%15==0)

즉 7로 나누고 15로 나눠도 나머지가 0인 값, 즉 최소 공배수일때 break를 통해 무한루프를 빠져나오게 되는 겁니다



실행 결과를 보시면 if(M%7==0 && M%15==0)가 만족하는 순간 break로 빠져나온다음 최소공배수를 표시하게 됩니다


만약 무한루프로 구현하지 않았다면 어떻게 해야 할까요?

반복 조건에 들어가는 true대신 조건을 넣어야 하는대요

이경우 최소 공배수의 크기를 예측해야하는 필요성이 있습니다


만약 200미만 숫자중 최소공배수가 있는가? 라는 프로그램을 만들고 싶다면 무한루프로 구현하시면 안되고 반복 조건에 M<200등의 기호를 넣어 줘야 한다는 것이 됩니다


무한루프는 유용하게 사용될수 있습니다

하지만 명령문을 잘못 구성할경우 계속 무한 루프가 돌아가게 되어 프로그램이 종료되지 못하는 경우가 발생할 수 있으니 주의하셔야 합니다

예를 들면 위 예제에서 break가 없었다면 계속 do~while이 돌아가게 되겠죠?

신고
댓글
댓글쓰기 폼