본문 바로가기
Language/JAVA

[JAVA] 반복문 // for문 while문 do-while문 break문 continue문

by 아이엠제니 2021. 9. 15.

 


 

 

반복문 (for문 while문 do-while문)

  • 어떤 작업(코드들)이 반복적으로 실행되도록 할 때 사용
  • for문은 반복 횟수를 알고 있을 때 주로 사용
    while문은 조건에 따라 반복할 때 주로 사용
    while문과 do-while문의 차이점은 조건을 먼저 검사한으냐 나중에 검사하느냐일 뿐 동작 방식은 동일
  • 반복문은 한 번 작성된 실행문을 여러 번 반복 실행해주기 때문에 코드를 절감하고 간결하게 만들어줌
  • 코드가 간결하면 개발 시간을 줄일 수 있고, 오류가 날 확률도 줄어든다

 

 

for문

  • 주어진 횟수만큼 실행문을 반복 실행할 때 적합한 반복 제어문
for(초기화식; 조건식; 증감식) {
  실행문
}

 

package thisisjava.chap04.num03;

public class ForPrintFrom1To10Example {
    public static void main(String[] args) {
        for (int i = 1; i <= 10; i++) {
            System.out.println(i);
        }
    }
}

 

  • 초기화식이 필요 없을 경우에는 초기화식 생략할 수 있다.
int i = 1;
for (; i<=100; i++ { ... }

 

  • 초기화식이 둘 이상이 있을 수도 있고, 증감식도 둘 이상이 있을 수 있다
    쉼료(,)로 구분해서 작성하면 됨
for (int i=0, j=100; i<=50 && j>=50; i++, j--) {...}
  • 초기화식에 선언된 변수는 for문 블록 내부에서 사용되는 로컬 변수임
  • for문을 벗어나서는 사용할 수 없음

 

//1부터 100까지 합을 출력

package thisisjava.chap04.num03;

public class ForSumFrom1To100Example {
    public static void main(String[] args) {
        int sum = 0;

        for (int i = 1; i <= 100; i++) {
            sum += i;
        }

        System.out.println("1~100 합: " + sum);
    }
}

 

//1부터 100까지 합을 출력

package thisisjava.chap04.num03;

public class ForSumFrom1To100Example1 {
    public static void main(String[] args) {
        int sum = 0;

        int i = 0;
        for (i = 1; i <= 100; i++) {
            sum += i;
        }

        System.out.println("1~" + (i - 1) + " 합 : " + sum);
    }
}

> i가 for문의 초기화식에서 선언되지 않고, for문 전에 선언되었다면 for문 내부뿐만 아니라 for문을 벗어나서도 사용할 수 있음

 

// float 타입 카운터 변수

package thisisjava.chap04.num03;

public class ForFloatCounterExample {
    public static void main(String[] args) {
        for (float x = 0.1f; x <= 1.0f; x += 0.1f) {
            System.out.println(x);
        }
    }
}

> for문 초기화식에서 루프 카운트 변수를 선언할 때 부동소수점 타입을 사용하지 말아야 함

> float 타입으로 정확하게 표현할 수 없음

 

  • for문은 또 다른 for문을 내포할 수 있음. 중첩 for문
  • 바깥쪽 for문이 한 번 실행할 때마다 중첩된 for문은 지정된 횟수만큼 반복해서 돌다가
    다시 바깥쪽 for문으로 돌아감
  • // 구구단
    
    package thisisjava.chap04.num03;
    
    public class ForMultiplicationTableExample {
        public static void main(String[] args) {
            for (int m = 2; m <= 9; m++) {
                System.out.println("*** " + m + "단 ***");
                for (int n = 1; n <= 9; n++) {
                    System.out.println(m + " x " + n + " = " + (m * n));
                }
            }
        }
    }

> 2단부터 9단까지 출력

 

 

while문

  • 조건식이 true일 경우에 계속해서 반복함
while (조건식) {
  실행문
}

 

//1부터 10까지 출력

package thisisjava.chap04.num03;

public class WhilePrintFrom1To10Example {
    public static void main(String[] args) {
        int i = 1;
        while (i <= 10) {
            System.out.println(i);
            i++;
        }
    }
}

 

// 1부터 100까지 합을 출력

package thisisjava.chap04.num03;

public class WhileSumFrom1To100Example {
    public static void main(String[] args) {
        int sum = 0;

        int i = 1;

        while (i <= 100) {
            sum += i;
            i++;
        }
        System.out.println("1~" + (i - 1) + " 합 : " + sum);
    }
}

 

// 키보드로 while문 제어

package thisisjava.chap04.num03;

public class WhileKeyControlExample {
    public static void main(String[] args) throws Exception {
        boolean run = true;
        int speed = 0;
        int keyCode = 0;

        while (run) {
            if (keyCode != 13 && keyCode != 10) {
                System.out.println("-----------");
                System.out.println("1.증속 | 2.감속 | 3.중지");
                System.out.println("----------");
                System.out.print("선택: ");
            }

            keyCode = System.in.read();

            if (keyCode == 49) { //1을 읽었을 경우
                speed++;
                System.out.println("현재 속도=" + speed);
            } else if (keyCode == 50) { //2를 읽었을 경우
                speed--;
                System.out.println("현재 속도=" + speed);
            } else if (keyCode == 51) { //3을 읽었을 경우
                run = false;
            }
        }
        System.out.println("프로그램 종료");
    }
}

> p.127

 

 

do-while문

  • 블록 내부의 실행문을 우선 실행시키고 실행 결과에 따라서 반복 실행을 계속할지 결정하는 경우도 발생
do {
  실행문;
} while { 조건식 } 

 

// do-while문

package thisisjava.chap04.num03;

import java.util.Scanner;

public class DoWhileExample {
    public static void main(String[] args) {
        System.out.println("메시지를 입력하세요");
        System.out.println("프로그램을 종료하려면 q를 입력하세요");

        Scanner scanner = new Scanner(System.in);
        String inputString;

        do {
            System.out.print(">");
            inputString = scanner.nextLine();
            System.out.println(inputString);
        } while (!inputString.equals("q"));

        System.out.println();
        System.out.println("프로그램 종료");
    }
}

 

 

break문

  • 반복문인 for문, while문, do-while문을 실행 중지할 때 사용됨. switch문에서도 break문 사용하여 종료
// break로 while문 종료

package thisisjava.chap04.num03;

public class BreakExample {
    public static void main(String[] args) {
        while (true) {
            int num = (int) (Math.random() * 6) + 1;
            System.out.println(num);
            if (num == 6) {
                break;
            }
        }
        System.out.println("프로그램 종료");
    }
}

> 6이 나오면 while문 종료

> 반복문이 중첩되어 있을 경우 break문은 가장 가까운 반복문만 종료

> 바깥쪽 반복문은 종료시키지 않음

 

//바깥쪽 반복문 종료

package thisisjava.chap04.num03;

public class BreakOutterExample {
    public static void main(String[] args) {
        Outter:
        // 이름(라벨)
        for (char upper = 'A'; upper <= 'Z'; upper++) {
            for (char lower = 'a'; lower <= 'z'; lower++) {
                System.out.println(upper + "-" + lower);
                if (lower == 'g') {
                    break Outter; //break 이름;
                }
            }
        }
        System.out.println("프로그램 실행 종료");
    }
}

> 중첩된 for문에서 lower 변수가 'g'를 갖게 되면 바깥쪽 for문까지 빠져나오도록 함

 

 

continue문

  • 반복문인 for문, while문, do-while문에서만 사용됨
  • 블록 내부에서 continue문이 실행되면 for문의 증감식 또는 while, do-while문의 조건식으로 이동함

 

//continue를 사용한 for문

package thisisjava.chap04.num03;

public class ContinueExample {
    public static void main(String[] args) {
        for (int i = 1; i <= 10; i++) {
            if (i % 2 != 0) { //2로 나눈 나머지가 0이 아닐 경우, 즉 홀수인 경우
                continue;
            }
            System.out.println(i); //홀수는 실행되지 않음
        }
    }
}

 

 

 

'이것이 자바다' 공부 기록
300x250