Java

JAVA - 반복문 ( while, do-while )

비망노트 2022. 7. 6. 14:00

- 자바 반복문 ( while )

 

반복문이란?

특정 작업을 반복해서 수행해야할 경우 해당작업 실행코드를 여러번 작성하는게 아닌

반복문을 사용해 해결할 수 있으며

반복문의 종류로는 for문, while문이 대표적이며 whlie문을 알아보도록하자.

 

while
int i = 0;    // 반복문을 제어할 변수 초기화
while(i<0){ // 참인동안 반복
    statement;   // 참일경우 실행될 실행문
    i++;       // 반복문을 제어할 변수 증,감
}

✅  for문과는 다르게 반복횟수를 모를경우에 적합하다

✅ 조건식에는 주로 메소드가 사용된다

 

 

for문과 while문은 항상 서로 변환이 가능하고 for문이 한눈에 보기에는 간결하지만

초기화나 증감식이 필요치않다면 while문이 더 적합할 수 있다.

for( ; ; ) {
}

위처럼 for문은 모두생략해 무한반복이 가능하지만

while문은 조건식이 생략불가능하므로 무한반복문을 만드려거든 while(true){ } 로 작성하면된다.

while(true){
}

 

예제
int i = 5;
while(i--!=0){
	System.out.print(i+" ");
}
// output
// 4 3 2 1 0

 

우선 위의 코드를 보면 증감식을 조건식에 한번에 넣어 작성돼 헷갈릴 수 있었지만

int i = 5;
while(i!=0){
	i--; // 따로 연산에 쓰인게아닌 단항이므로 바로 감소적용
	System.out.print(i+" ");
}

위 처럼 풀어 쓸 수 있다.

이제 풀이해보면 i 는 5이므로  5 != 0 참이다

하지만 여기서 후위연산자가 실행된다.

후위연산이라해도 혼자 쓰이면 바로 감소 하기때문에 그 다음 출력문을 실행할 당시의 i값은 4이다.

이를 참인동안 반복하고 1이 되면 1로 1!=0 을 비교한뒤 감소해 출력하므로 0까지 출력된다.

i--!=0 이니까 0은 출력안될거라고 헷갈릴것같으면 이렇게 따로 후위연산을 옮겨서 읽어보자

 

예제2
int sum = 0;
int num = 12345;

while(num!=0){
	sum = num%10;
	num /= 10
}

위는 주어진 num의 각 자릿수를 더하는 코드이다.

 

1. num이 0이 아니므로 실행문을 실행시킨다.

2. sum에 num을 10으로 나눈 나머지 즉 현재 1의자리 값이 들어간다.

3. 정수형끼리의 연산이니까 주어진 num = num / 10 을 통해 1234.5에서 소수점은 버려지고 1234로 num값이 바뀐다.

4. 이를 반복하고 num이 12345 에서 1만 남았을때 sum에 1%10 =1 이니 1을 더한다.

6. num/=10  즉  1 / 10 을하면 소수점 버려지고 0이 되므로 다음반복은 실행하지않는다.

 

 

 

do - while문


do{
    실행문;
} while(조건식);  <- 세미콜론 필요.

✅ do-while문은 while문과 같이 while(조건식)으로 반복실행할지 벗어날지를 정한다.

❗ 하지만 while과 다르게 무조건 한번은 실행된다는것이다.

int i=1;
while(i!=1){
    System.out.println("실행");
}
// output

위 아래 모두 증감식은 생략하고 while 조건식에 들어가는 처음부터 거짓으로 설정했기에 while은 반복되지않는다.

int i=1;
do{
    System.out.println("실행");
} while(i!=1);
// output : 실행

하지만 일반 while문은 조건식 판별이 먼저 수행되므로 "실행" 이 출력되지않는다.

하지만 do - while 문은 단어그대로 do 해라 라는뜻으로 이해하면 된다.

일단 수행을 먼저 하고 그다음에 다시 반복할지 조건식을 판별하기때문에 적어도 한번은 실행된다.

'Java' 카테고리의 다른 글

시간복잡도  (0) 2022.08.25
JAVA - 재귀 ( recursion )  (0) 2022.08.13
JAVA - 반복문 ( for )  (0) 2022.07.05
JAVA - 조건문 ( switch - case )  (0) 2022.07.02
JAVA - 조건문 ( if, else if, else )  (0) 2022.07.02