본문 바로가기

언어공부/Java

자바 반복문 - while문/ 무한루프문/ do~while문

자바 반복문에 대해서 알아보자.

프로그램의 흐름을 바꾸는 역할을 하는 문장들을 제어문이라고 하며, 제어문에는 조건문과 반복문이 있다.

반복문은 조건에 따라 문장이 반복 수행되도록 한다.

while문

while문 구조

while문의 구조는 위와 같으며, 조건식이 참일동안 아래의 문장이 반복된다. if문과 구조는 같지만, while문은 조건식이 참일동안 반복된다는 점이 다르다. 조건식이 거짓이면 문장 전체를 벗어난다. while문에서 초기치와 증감식만 추가되면 for문과 동일하게 사용이 가능하다.

 

while문 예제
위 while문 예제와 동일한 for문 예제

위의 예제를 보면, while문에서 조건식 i<=10일동안 total에 i값을 계속 더한다. i가 2씩 증가되기 때문에 i가 2, 4, 6, 8, 10일 때만 while문장이 실행되어 "짝수들의 누적합=30"이 출력된다.

 


무한루프문

무한루프란 조건식이 무조건 참이어서 영원히 반복하는 반복문을 뜻한다.

for문에서는 for( ; ; ){  } / while에서는 while(true) {  } 로 작성할 수 있다.

for문, while문 안에 if문으로 조건을 걸어 빠져나올 수 있게 만든다.

 

무한 루프 예제 1

위의 예제를 보면, flag=true이므로 while문은 무한루프 문이다. 여기서 변수 num에 숫자를 입력 받아 0이 아니면 계속 더하며 0이면 flag=false가 되어 무한루프를 빠져나온다.

 


do~while문

do~while문 구조

do~while문의 구조는 위와 같으며, while문과는 다르게 do문장을 한번 수행한 후 while의 조건식을 판단해서 참이면 do문장 반복실행, 거짓이면 빠져나온다.  while문은 조건식의 결과에 따라 문장이 한 번도 실행되지 않을 수 있지만, do-while문은 최소한 한번은 실행된다.

 

do~while문 예제 1

위의 예제를 보면, 일단 do의 문장을 한번 실행한다. 그리고 while의 조건식 i>=1와 비교해서 참일동안 do문장을 실행한다. 출력되는 값은 "9 7 4 3 1"이 된다.

 

do~while문 예제 2

위의 예제를 보면, 일단 do의 문장을 한번 실행한다. 그리고 while의 조건식 i<10와 비교해서 참일동안 do문장을 실행하지만 여기서 i는 10이므로 거짓으로 문장을 빠져나와 출력되는 값은 "10"이 된다.

 

do~while문 예제 3

위의 예제를 보면, 이상적인 do~while문 예제이다. answer변수에 임의의 정수값이 대입되며, do의 문장을 한번 실행한다. 스캐너 클래스로 input변수 값을 입력받아 input값이 answer값과 같지 않으면 if-elseif문에 걸리며 값이 같아질 때 까지 do문장을 계속 반복하며, 값이 같으면 while 조건문에 거짓으로 "정답입니다!"가 출력된다.