while(true) 문은 for(;;)과 같은 의미라고 볼 수 있다. 반복 횟수가 정해져 있지 않은 경우 while 문을 쓰는 것이 좋다.
import java.util.Scanner;
public class Sample {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.printf("숫자 입력 : ");
String tmp = scanner.nextLine();
int number = Integer.parseInt(tmp);
int sum = 0;
while (number != 0) {
sum += number%10;
number /= 10;
}
System.out.println(sum);
}
}
do-while문도 자바의 정석을 통해 새로 알게된 지식이다. while문과 거의 유사하지만 do-while문은 조건문과 상관없이 적어도 1번은 do문을 통해 실행을 한다.
import java.util.Scanner;
public class Sample {
public static void main(String[] args) {
int answer = (int) ((Math.random() * 100) + 1);
int input;
do {
Scanner scanner = new Scanner(System.in);
System.out.printf("1~100 사이 숫자를 맞춰봐 >> ");
input = scanner.nextInt();
if (answer > input) {
System.out.println("큰 수를 입력하세요");
} else if (answer < input) {
System.out.println("작은 수를 입력하세요");
} else {
System.out.println("정답!");
break;
}
} while (input != answer);
}
}
do {
int n; // 컴파일 에러!
} while (n ....)int n;
do {
} while (n ....) public class Sample {
public static void main(String[] args) {
for (int i = 1; i <= 100; i++) {
System.out.printf("i = %d ",i);
int tmp = i;
do {
if (tmp % 10 % 3 == 0 && tmp % 10 != 0) {
System.out.printf("짝");
}
} while ((tmp /= 10) !=0);
System.out.println();
}
}
}
break문은 자신이 포함된 가장 가까운! 반복문을 탈출하게 해주는 문구이다. 반면 continue 문은 반복문의 가장 끝으로 보내져서 다음 반복을 실행하게 해준다.
public class Sample {
public static void main(String[] args) {
Loop1 :
for (int i=2; i<10; i++) {
for (int j=1; j<10; j++) {
if (j == 5) break; // 4가지 경우의 수
System.out.printf("%d * %d = %d\n",i,j,i*j);
}
}
}
}
break; - break문은 가장 가까운 반복문을 탈출하게 되므로 변수가 j인 안쪽 for문을 탈출한다. 그럼 2단을 1~4까지 진행하고 3단으로 넘어가 1~4까지 진행하는 식으로 모든 단을 4까지만 한다.
break Loop1; - Loop1자체를 탈출하는 구문이므로 2단을 4까지만 하고 전체 반복문을 탈출한다.
continue; - 가장 가까운 반복문의 끝으로 가게 되므로 안쪽for문의 변수 j가 5만 건너뛰고 6부터 정상적으로 실행된다. 즉, 모든 단을 5만 빼고 다 실행한다.
continue Loop1; - break;과 마찬가지로 모든 단을 4까지만 실행한다.
어떤 경우인지에 따라 적절히 사용하면 좋을 것이다.