Ch4-16~19. while문
0. 목차
Chapter4. 조건문과 반복문
Ch4 - 16. while문
Ch4 - 17. while문 예제1
Ch4 - 18. while문 예제2
Ch4 - 19. do - while문
Ch4 - 16. while문
▶ while문이란?
▷ 조건을 만족시키는 동안 블럭{}을 반복
▷ 반복횟수를 모를 때 적합
while (조건식) {
// 조건식의 결과가 참인 동안, 이 부분(while () {_})을 반복
} // 조건식의 결과가 거짓이면, while문을 빠져나옴
▶ for문과 while문
[1] [2] [3] [4] [5] [6] [7] [8] [9] [10]
▷ for문
for (int i = 1; i <= 10; i++) {
System.out.printf("[%d] ", i);
}
// console
[1] [2] [3] [4] [5] [6] [7] [8] [9] [10]
▷ while문
int i = 1;
while (i <= 10) {
System.out.printf("[%d] ", i);
i++;
}
// console
[1] [2] [3] [4] [5] [6] [7] [8] [9] [10]
if문 - case문과는 달리
for문 - while문은 100% 변경가능
Ch4 - 17. while문 예제1
▶ i--
를 사용하여 i가 0이 될 때 까지 반복
int i = 5;
while (i-- != 0) {
System.out.println(i);
}
// console
4
3
2
1
0
▶ i에 1씩 증가시킨 값을 더하여 100이하의 수가 나올 때까지 반복
int i = 0;
int sum = 0;
while (sum <= 100) {
System.out.printf("+%d [%d]\n", i, sum);
sum += ++i;
}
// console
+0 [0]
+1 [1]
+2 [3]
+3 [6]
+4 [10]
+5 [15]
+6 [21]
+7 [28]
+8 [36]
+9 [45]
+10 [55]
+11 [66]
+12 [78]
+13 [91]
1 + 2 + 3 + … + 13 = 91
Ch4 - 18. while문 예제2
▶ 입력받은 수(한 자리 수)를 모두 더한 값 출력
int sum = 0, num = 0;
System.out.print("입력 > ");
Scanner scanner = new Scanner(System.in);
String str = scanner.nextLine();
num = Integer.parseInt(str);
while (num != 0) {
int namuge = num % 10; // 1234 % 10 = 4 : namuge = 나누는 수의 맨 마지막 값
System.out.printf(" %d + %d = ", sum, namuge);
sum += namuge; // sum = sum + namuge
System.out.printf("%d\n", sum);
num /= 10; // 1234 / 10 = 123...4 : 다음 반복 시 num은 123
}
System.out.println("결과 값 > " + sum);
// console
입력 > 1234
0 + 4 = 4
4 + 3 = 7
7 + 2 = 9
9 + 1 = 10
결과 값 > 10
Ch4 - 19. do - while문
▶ do - while문이란?
▷ 블럭{}을 최소한 한 번 이상 반복
▷ 사용자 입력받을 때 유용
do {
// 조건식의 연산결과가 참일 때, 이 부분(do {_})을 실행
} while (조건식);
▶ 예시
▷ 나도 모르는 임의의 수 찾기(do - while문)
int input = 0, answer = 0;
Scanner scanner = new Scanner(System.in);
answer = (int) (Math.random() * 100) + 1;
System.out.print("1 ~ 100 사이 정수를 입력 > ");
do {
input = scanner.nextInt();
if (input > answer) {
System.out.println("down");
System.out.print("> ");
} else if (input < answer) {
System.out.println("up");
System.out.print("> ");
} else {
System.out.println("정답!");
}
} while (input != answer);
// console
1 ~ 100 사이 정수를 입력 > 100
down
> 80
down
> 70
down
> 60
down
> 50
정답
▷ 나도 모르는 임의의 수 찾기(while문)
int input = 0, answer = 0;
Scanner scanner = new Scanner(System.in);
answer = (int) (Math.random() * 100) + 1;
System.out.print("1 ~ 100 사이 정수를 입력 > ");
while (input != answer) {
input = scanner.nextInt();
if (input > answer) {
System.out.println("down");
System.out.print("> ");
} else if (input < answer) {
System.out.println("up");
System.out.print("> ");
} else {
System.out.println("정답!");
}
}
// console
1 ~ 100 사이 정수를 입력 > 100
down
> 90
down
> 80
down
> 70
down
> 60
down
> 50
down
> 40
up
> 30
up
> 44
up
> 45
up
> 46
up
> 47
up
> 48
정답!