본문 바로가기
BackEnd/Java

JAVA] 반복문 - While문/ doWhile문/ for문 /이중for문/ continue/ break

by pplucy 2020. 11. 12.

 

** While

[표현문]

 while(조건식) {

실행문

}

 

---> 조건식의 결과값이 true이면 실행문 반복 실행

---> 조건식의 결과값이 false이면 실행문을 건너 뛴다.(while문을 벗어나게 되는 것)

 

예제)

 

1. 다섯번만 반복하는 조건문 만들기

int i = 0;

while(i < 5) {

System.out.println(i + "번째 반복문입니다.);

i++; // i 가 1씩 증가해야 4번째까지 도달할 수 있다. 안해주면 무한반복하게 됨

}

 

2. 정수를 입력받아 구구단 출력하기

 System.out.println("정수 하나를 입력하세요:  ");

int num = sc.nextInt();

int no = 1;

while(no <10) { //얼마나 반복할지 조건식을 넣어줘야 한다.

System.out.println ( num * no );

no++; //no의 크기가 증가해야 *1, *2 이런식으로 할 수 있다.

}

 

 

3. 사용자에게 비밀번호를 입력받아 비밀번호가 맞을 경우 로그인, 아닐 경우 로그인을 반복하게 한다.

   단, 5회 실패시 프로그램 종료

 

Scanner sc = new Scanner(System.in);

String pw = "";

String realpw = "12345";

int i = 0;

 

while(i < 5) {

System.out.println("비밀번호를 입력해주세요 : ");

pw = sc.nextLine();

 

if(!realpw.equals(pw)) {

    System.out.println("비밀번호를 " + (i+1) +"회 잘못입력하셨습니다.");

    i++;  

 

if(i == 5) {

System.out.println("비밀번호를 " + i + "회 잘못입력하여 프로그램을 종료합니다.");

}

} else  if(realpw.equals(pw)){

System.out.println("로그인에 성공하였습니다."); break;

}

 

 

 

** doWhile

[표현식]

doWhile {

  실행문

} while( 조건문 ) 

 

: do{}안에 있는 실행문을 먼저 1회 실행한 다음, 

while의 조건문의 조건식을 판단해서 true이면 실행코드를 반복하고

false이면 반복문을 탈출한다.

 

 

** for문

[표현식]

for(초기식; 조건식; 증감식) {

실행문

}

 

(num은 사용자에게 입력받은 값)

ex) for(int i = 0 ; i < num ; i++){

}

---> 이 표현식을 풀어서 정리하면,

        int 타입의 i 변수의 초기값을 0으로 선언하고, 이 i 는 사용자에게 입력받은 값인

       num보다 적은수만큼만 반복하며, 반복문이 끝나면 i가 후위연산된다.

     (여기서 num보다 적은수 만큼만 반복하는 것은 i의 초기값이 '0'이기 때문 !

 

 

 

** 이중 for문

---> 별찍기 문제를 풀어보면 좋음 !

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
public void quizeStar() {
 
        // 정수를 입력받아 그만큼 삼각형 모양으로 별찍기하는 메소드
 
        System.out.println("정수를 입력해주세요 : ");
        int num = sc.nextInt();
 
        for (int i = 1; i <= num; i++) { // 0칸이 나오는게 싫어서 이렇게 함 원래는 (int i=0; i<num; i++);
 
            for (int j = 1; j <= i; j++) { // 0칸이 나오는게 싫어서 이렇게 함 원래는 (int j=0; j<i; j++);
 
                System.out.print("*");
 
            }
 
        }
 
    }
 
    public void quizestar2() {
        // 정수를 입력받아 그 수만큼 거꾸로 된 삼각형을 만드는 메소드
 
        System.out.println("정수를 입력하세요 : ");
        int num = sc.nextInt();
 
        for (int i = 0; i < num; i++) {
 
            for (int j = i; j < num; j++) {
 
                System.out.print("*");
            }
 
            System.out.println();
        }
 
    }
 
    public void quizestar3() {
 
        // 정수를 입력받아 오른쪽으로 정렬되는 삼각형 만들기 메소드
 
        System.out.println("정수를 입력해주세요 : ");
        int num = sc.nextInt();
 
        for (int i = 0; i < num; i++) {
 
            for (int j = 0; j < i; j++) {
                System.out.print(" ");
            }
 
            for (int k = i; k < num; k++) {
                System.out.print("*");
            }
 
            System.out.println("");
 
        }
 
    }
 
    public void quizeStar4() {
        //정수의 수만큼의 크기의 역삼각형 만들기
        System.out.println("정수를 입력해주세요 :");
        int num = sc.nextInt();
 
        for (int i = 0; i < num; i++) {
            
            for(int a = 0; a <= i; a++) {
                System.out.print(" ");
            }
 
            for (int j = i; j < num-1; j++) {
                System.out.print("*");
 
            }
 
            for (int k = i; k < num; k++) {
                System.out.print("*");
            }
 
            System.out.println(" ");
        }
    
 
    }
 
cs

 

 

 

 

** continue

 

- 이 continue를 사용하면 그 즉시 조건식(while) 또는 증감식(for)로 돌아간다.

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
public void testContinue() {
        
        // 1~10까지 정수들의 합계 출력하기
        // 단 4의 배수는 제외하고 계산
        
        int sum = 0;
        for(int i = 1 ; i < 11 ; i++) {
            if(1%4 == 0) {
                continue// 뒤로 보내지 않고 위로 올린다
            }
            sum += 1;
            }
        
        
        System.out.println("합계 : " + sum);
        }
        
        
cs

 

** break

 

- break문은 반복문 내에서 즉시 반복을 멈추기 위한 예약어

- 일반적으로 if문과 함께 사용해 특정 조건일 때 반복을 멈추도록 설정한다.

  (switch 문과도 자주 사용된다.)

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
public void testBreak() {
    
        // 문자열을 입력받아 문자열의 문자수를 출력하는 메소드
        // 사용자가 "end" 입력하면 반복을 종료함
        // do-while
        
        
        Scanner sc = new Scanner(System.in);
        
        do {
            System.out.println("문자열 입력: ");
            String str = sc.nextLine();
            
            if(str.equals("end")) {
                break;
            }
            
            //String.length : 문자열의 길이를 반환하는 메서드
            System.out.println("글자갯수 : " + str.length());
            
        } while(true);
        
        }
        
cs

'BackEnd > Java' 카테고리의 다른 글

Java] 객체지향 - 추상화, 캡슐화  (0) 2020.11.16
JAVA] 배열(Array) - 배열  (0) 2020.11.12
JAVA] 형변환 테스트  (0) 2020.11.11
JAVA] 상수 테스트 / 오버플로우 테스트  (0) 2020.11.11
JAVA ] 변수값 변경 테스트  (0) 2020.11.10

댓글