for문과 마찬가지로 반복문에 속하지만 다른 점이 있다면,
for문은 반복 범위가 명확하고 정해져 있을 때 사용되며, while문은 조건에 따라 반복이 이루어져야 할 때 사용된다고 한다.
사실 큰 차이가 없는 것 같은데 예제를 보며 비교해보자.
public static void main(String[] args) {
//for문 구구단
int dan = 3;
for (int i=1; i <= 9; ++i) {
System.out.println(dan + "*" + i + "=" + (dan * i));
}
//while문 구구단
int i = 1;
while (i <= 9) {
System.out.println(dan + "*" + i + "=" + (dan * i));
i += 1;
}
}
구구단 3단을 만드는 for문과 while문의 예제이다.
for문과 while문의 차이를 보자면 for문에서는 한줄로 표현되는 조건식이 while문은 3줄로 나눠져 있다는 것을 알 수 있다.
for (int i=1; i <= 9; ++i)
int i = 1;
while (i <= 9)
i += 1;
이렇게만 보면 간단하게 쓸 수 있는 for문이 더 좋아보이는데 왜 while문을 쓰는건지..? 궁금하다.
다른 예제와 함께 더 알아보자.
while문과 배열
int[] numbers = {
10, 55, 78, 201, 100, 999, 878, 25
};
int j = 0;
while(j < numbers.length) {
int num = numbers[j];
if (num %2 == 0) {
System.out.println(num + "은 짝수입니다.");
}else {
System.out.println(num + "은 홀수입니다.");
}
j += 1;
}
배열에 있는 정수가 짝수인지 홀수인지 알아보는 예제이다.
while문 내부에 if문을 통하여 배열 내의 수를 구분한다.
물론 이것도 for문으로도 충분히 가능하다.
continue와 break의 사용
continue는 조건에 부합하면 빠져나가지 않고 계속 돌다가 조건과 맞지 않을 때 if문 밑으로 빠져나온다.
continue를 사용하면 while 반복문에 있는 나머지 문장을 모두 건너뛴다.
그래서 무한 반복에 빠지지 않도록 순서를 조심할 필요가 있다.
int[] values = {1, 2, 3, 4, 5, 6, 7, 8};
int k = 0;
while (k < values.length) {
int value = values[k];
if (value < 5) {
k += 1; //이 문장 필수
continue;
}
System.out.println(value);
k += 1;
}
continue를 사용한 예제이다.
k를 0으로 지정하고 배열의 길이인 8보다 작을 때까지 반복될 것이다.
while문 내부의 if문에 continue를 사용하여 value값이 5가 될 때까지 if문아래로 내려가지 못한다.
k가 4가 되었을 때 배열의 네번째 값은 5가 되므로 if문 아래로 내려가서 출력된 후 k값이 1증가하게 된다.
break는 반복문을 더 이상 진행하지 않고 바로 빠져나오는 것이다.
int[] values = {1, 2, 3, 4, 5, 6, 7, 8};
int z = 0;
while (z < values.length) {
int value = values[z];
if (value > 5) {
System.out.println("5보다 크면 반복문을 중단합니다.");
break;
}
System.out.println(value);
z += 1;
}
break도 continue와 동일하게 사용이 가능하다.
value값이 5가 될 때 까지 출력하다가 넘어가면 if문 내로 들어가서 중단된다.
이는 for문에서도 똑같이 사용가능하다.
do while 문
while문은 조건식이 위에 있는 두괄식이라면 do while문은 조건식이 아래에 있는 미괄식이다.
do {
//문장 실행
} while (조건문);
이러한 구조로 작성된다.
경우에 따라서 while문은 반복문 내부가 한 번도 실행되지 않을 수 있지만 do while문은 적어도 한 번은 실행된다.
public static void main(String[] args) {
String[] planets = {
"수성", "금성", "지구", "화성", "목성", "토성"
};
int i = 0;
do {
String dest = planets[i];
System.out.println(dest + "으로 여행 가자");
i += 1;
} while (i < planets.length);
}
위의 예제에서는 반복문을 실행시켜 문장을 출력한 후 while의 조건문을 실행한다.
배열의 길이보다 i가 작은 경우 반복문을 다시 실행한다.
이렇게 for문부터 do while문까지 세가지의 반복문을 살펴봤는데
사실 아무거나 써도 상관은 없다. 가독성이 더 높고 문맥에 적절해보이는 것을 골라서 사용하면 된다고 한다.
'java 공부 > 코딩은 처음이라 with 자바' 카테고리의 다른 글
#자바_9.배열 (0) | 2024.08.20 |
---|---|
#자바_8.switch문_제어문 (0) | 2024.03.09 |
#자바_6.if문_제어문 (0) | 2024.03.08 |
#자바_5.for문_제어문 (0) | 2024.03.08 |
#자바_4. 배열_자바 언어 기본 (0) | 2024.03.08 |