반응형

while문

  • 조건을 만족시키는 동안 블럭{}을 반복 - 반복횟수 모를 때

while문은 조건식의 결과가 참(true)인 동안, 블럭{}안의 문장들을 반복한다.

그러다가 조건식이 거짓이 되면 while문을 빠져나간다.

while문과 for문은 항상 어느쪽으로든지 변경이 가능하다.
원래는 while문이 반복문의 원조인데,
while문 사용방식인, 처음에 초기화 문장 써주고, 뒤에 증감식 써주는 등을 따로 써주어야 하는게 귀찮아서,
이것을 하나로 합쳐 놓은 것이 for문이다. 

if문하고 switch문은 제약조건떄문에 서로 못바꿀 떄도 잇는데,
for문과 while문은 100% 바꿀 수 있다.

[Ex4_14]

import java.util.*;

public class Ex4_14 {

    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();
        num = Integer.parseInt(tmp);

        while(num != 0) {
            // num을 10으로 나눈 나머지를 sum에 더함
            sum = sum + (num%10);
            System.out.println("sum="+sum + ", num=%10="+num%10);

            num = num / 10;
        }
        System.out.println("각 자리수의 합:" + sum);
    }
}

[실행 결과]

// 숫자를 입력하세요. (예:12345) >12345
sum=5, num=%10=5
sum=9, num=%10=4
sum=12, num=%10=3
sum=14, num=%10=2
sum=15, num=%10=1
각 자리수의 합:15

 

 


 

do-while문

  • 블럭{}을 최소한 한 번 이상 반복 - 사용자 입력받을 때 유용

do-while문은, while문의 while(조건식){블럭} 형태로 되어있는 것에서 블럭을 앞으로 뺀 것이다. 

조건식에 들어가기전에 블럭이 있으므로 처음 한 번은 무조건 실행된다.

그러니까, while문은 조건식이 거짓이면 0번 실행된다. 그러니까 {}블럭이 0번~n번 반복 될 수 있는데,
do-while문은 블럭{}이 처음 한번은 무조건 실행되므로 1번~n번 반복 될 수 있다.

do-while의 이러한 특성 때문에 사용자 입력을 받을 때 유용하다.

[Ex4_15]

import java.util.*;

public class Ex4_15 {

    public static void main(String[] args) {
        int input = 0, answer = 0;

        answer = (int) (Math.random() * 100) + 1;    // 1~100 사이의 난수
        Scanner scanner = new Scanner(System.in);

        do {
            System.out.print("1과 100사이의 정수를 입력하세요.>");
            input = scanner.nextInt();

            if (input > answer) {
                System.out.println("더 작은 수로 다시 시도해보세요.");
            } else if (input < answer) {
                System.out.println("더 큰 수로 다시 시도해보세요.");
            }
        } while (input != answer);

        System.out.println("정답입니다.");
    }
}

[실행 결과]

1과 100사이의 정수를 입력하세요.>50
더 큰 수로 다시 시도해보세요.
1과 100사이의 정수를 입력하세요.>75
더 작은 수로 다시 시도해보세요.
1과 100사이의 정수를 입력하세요.>60
더 큰 수로 다시 시도해보세요.
1과 100사이의 정수를 입력하세요.>70
더 큰 수로 다시 시도해보세요.
1과 100사이의 정수를 입력하세요.>72
더 작은 수로 다시 시도해보세요.
1과 100사이의 정수를 입력하세요.>71
정답입니다.
반응형

'JAVA' 카테고리의 다른 글

배열의 생성과 선언, 배열의 인덱스  (0) 2022.03.21
break문, continue문, 이름붙은 반복문  (0) 2022.03.20
중첩 for문  (0) 2022.03.20
for문  (0) 2022.03.19
임의의 정수 만들기  (0) 2022.03.19