/ JAVAJUNGSUK

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
정답!