본문 바로가기
Java/Java 기초문법

[JAVA 기초] 제어문 - 반복문 (while문, do~while문)

by dev수니 2021. 3. 3.
반응형

 1  while문 

 

while문은 조건식을 검사하고 조건식이 참이면 반복하고 false이면, while문 전체를 벗어난다.

 

while(조건식){
   // 실행될 부분
}

while문의 조건식은 생략할 수 없으며 조건식이 true이면 계속해서 반복한다.

 

 2  do~while문 

do~while문은 while문의 변형된 형태이다. while문이 조건식을 검사한 다음 참/거짓 여부에 따라 반복문을 수행했다면, do~while문은 일단 한번은 문장들을 수행하고 그 다음에 조건식을 검사해서 반복을 결정한다. 그러므로 do~while문은 조건식의 참/거짓 여부에 관계없이 적어도 한번 수행된다.

 

do{
    // 실행되는 부분
} while(조건식);

 


Ex 예제.

1. while문을 사용하여 입력한 값이 'N'일 때까지 반복하고 몇번 반복했는지 알려주는 프로그램

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
package java_practice;
 
import java.util.Scanner;
 
public class While_Music {
 
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        String answer = "Y";
        int count = 0;
        
        while(answer.equals("Y")){
            System.out.println("음악을 재생하시겠습니까?");
            answer = sc.nextLine();
            if(answer.equals("Y")) {
            System.out.printf("음악을 %d번 재생했습니다.%n"++count);    // %n : 줄바꿈
            }
        }
        System.out.println("프로그램 종료.");
        sc.close();
    }
}
cs

 

 

1. 일단 Scanner생성 후
2. Y/N를 담을 String 타입 변수 answer을 선언하고 초기값을 "Y"로 설정해준다.
3. 그리고 재생 횟수를 담을 int타입 변수 count도 0으로 설정해준다. 
4. 음악을 재생하겠습니까?라는 문구가 반복되므로 while문 안에 들어가야 하며 'Y'가 아닌 대답이 나올 경우 while문을 빠져나와야 한다. 또한 Scanner로 Y/N를 입력받는 것도 계속 반복되기때문에 while문 안에 넣어주고 사용자가 'Y'를 입력했을 때 음악의 재생횟수를 알려줘야하기 때문에 if문으로 answer가 'Y'일 경우로 조건을 걸어주고 ++count로 재생횟수를 알려주는 것이다.
5. 이후에 입력값을 'Y'가 아닌 다른 값을 입력한다면 더이상 while문이 반복되지 않고 빠져나와 "프로그램 종료"가 출력된다.
 
tip equals() 메서드
연산자 == 와 기능은 비슷하지만, 주소값을 비교하는 == 와 내용자체를 비교하는 equals()메서드는 다르다.
자세한 내용은 다음 포스팅에서 확인가능하다.

soonipy.tistory.com/21

 

[JAVA 기초] 자바 문자열 비교 (연산자 ==와 메서드 equals와 차이)

자바에서 값을 비교하는 방법으로 보통 연산자인 ==를 많이 사용한다. 하지만 문자열 타입의 String은 메서드인 equals()를 주로 사용하는데 이는 == 은 주소값을 비교하고 equals는 값만을 비교한다는

soonipy.tistory.com

 

 

 

 

 

3. 다음 내용을 출력하는 프로그램을 do~while문으로 만든 것이다.

3 5 7 9 11
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
package java_practice;
 
import java.util.Scanner;
 
public class While_Music {
 
    public static void main(String[] args) {
        int i=3;        
        do {
            System.out.print(i + " ");
            i=i+2;
        } while(i<=11);
    }
}
cs

1. do~while문은 일단 무조건 do안의 내용이 실행되야 하기 때문에 3이 출력되고 i값엔 +2가 되어 저장된다.

2. 그후 while문이 조건식을 검사하게 되고 i값이 3으로 11보다 작거나 같기때문에 다시 do문이 실행된다.

3. 같은 내용이 반복된다.

 

 

 

 

4. 다음은 정수 n을 여러번 입력받고 입력받은 정수의 총 합을 구하는 프로그램이다. 총 합이 100을 넘어가면 총 더한 값을 알려주고 종료하게 된다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
package java_practice;
 
import java.util.Scanner;
 
public class Do_While_Sum {
    public static void main(String[] args) {
//        정수 n을 여러번 입력받고 입력받은 정수의 총 합을 구하는 프로그램이다.
//        총 합이 100을 넘어가면 종료하게 된다.
        
        Scanner sc = new Scanner(System.in);
        int sum = 0;
        int input;
 
        do {
            System.out.println("더하고 싶은 수를 입력하세요.\n(총 합이 100이상이면 프로그램은 종료됩니다.)");
            input = sc.nextInt();
            sum += input;
        }while(sum < 100);
 
        System.out.printf("입력하신 수의 총 합은 %d입니다. %n프로그램 종료.", sum);
        sc.close();
    }
}
cs

 

 

반응형

댓글