- 자바 반복문 ( 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 |