1. 반복문 while
while문은 조건식이 '참(true)인 동안', 즉 조건식이 거짓이 될 때까지 블럭{} 내의 문장을 반복한다.
while (조건식) {
// 조건식의 연산결과가 참(true)인 동안, 반복될 문장들을 적는다.
}
for문과 while문은 아래와 같이 바꿔 쓸 수 있다.
int i = 0;
while (i < 3) {
System.out.println("안녕하세요");
i++;
}
// for문과 while문은 바꿔 쓸 수 있다.
for (int i = 0; i < 3; i++) {
System.out.println("안녕하세요");
}
while문은 for문과는 달리 조건식을 생략할 수 없다.
while() { // 에러. 조건식이 없음
}
while(true) { // 무한루프
}
- 예제 FlowEx23.java
public class FlowEx23 {
public static void main(String[] args) {
int i = 5;
while(i--!=0) {
System.out.println(i + " - I can do it.");
}
}
}
- 예제 FlowEx24.java [카운트 다운]
public class FlowEx24 {
public static void main(String[] args) throws InterruptedException {
int i = 11;
System.out.println("카운트 다운을 시작합니다.");
while(i--!=0) {
System.out.println(i);
Thread.sleep(1000);
}
System.out.println("GAME OVER");
}
}
- 예제 FlowEx25.java
import java.util.Scanner;
public class FlowEx25 {
public static void main(String[] args) {
int num = 0, sum = 0;
System.out.print("숫자를 입력하세요. (예:12345)>");
Scanner scanner = new Scanner(System.in);
String tmp = scanner.nextLine(); // 화면을 통해 입력받은 내용을 tmp에 저장
num = Integer.parseInt(tmp); // 입력받은 문자열(tmp)을 숫자로 변환
while(num != 0) {
// num을 10으로 나눈 나머지를 sum에 더함
sum += num % 10;
System.out.printf("sum=%3d num=%d%n", sum, num);
num /= 10; // num = num / 10; num을 10으로 나눈 값을 다시 num에 저장
}
System.out.println("각 자리수의 합:" + sum);
}
}
- 예제 FlowEx26.java
public class FlowEx26 {
public static void main(String[] args) {
int sum = 0;
int i = 0;
// i를 1씩 증가시켜서 sum에 계속 더해나간다.
while((sum += ++i) <= 100) {
System.out.printf("%d - %d%n", i, sum);
}
}
}
2. do-while문
do-while문은 조건식과 블럭{}의 순서를 바꿔놓은 것이다. 그래서 블럭{}을 먼저 수행한 후에 조건식을 평가한다.
do {
// 조건식의 연산결과가 참일 때 수행될 문장들을 적는다.
} while (조건식); // 끝에 ';'을 잊지 않도록 주의
- 예제 FlowEx29.java [369 게임]
public class FlowEx29 {
public static void main(String[] args) {
for (int i = 1 ; i <= 100 ; i++) {
System.out.printf("i=%d", i);
int tmp = i;
do {
// tmp%10이 3의 배수인지 확인(0 제외)
if (tmp % 10 % 3 == 0 && tmp % 10 != 0) // 1의 자리가 3, 6, 9일 때
System.out.print("짝");
// tmp /= 10은 tmp = tmp / 10과 동일
} while ((tmp /= 10) != 0); // tmp : 1 // tmp = tmp / 10
System.out.println();
}
}
}
참고문헌 : 남궁성(2016), Java의 정석, 도우출판