IT/JAVA

[JAVA] 반복문 : while문을 이용한 무한루프

밍띠이 2019. 2. 13. 21:06
반응형

while문

특정 조건을 만족할 때 까지 무한정 돌아간다.
무한 루프를 만들기 쉽다.

while(i<5) {
    System.out.println("i번째");
    i++;
}

무한 루프 만들기

무한루프를 만들려면 while문 조건에 항상 참이되는 식을 넣으면 된다.
주의할점은 탈출구를 만들지 않으면 프로그램을 강제종료 할때까지 돌아가기 때문에 유의

while(True) {
    System.out.println("i번째");
    i++;
    if(i == 5) {
        break;
    }
}

무한루프 예제 (Ex17.java)

학생의 점수를 받아 수우미양가를 보여주는 프로그램을 만드세요.
조건1. 점수가 -1이면 프로그램을 종료합니다.

Note switch 문과 if문 둘 다 사용 가능하다.

  • if문 일 경우
public static void main(String[] args) {
    Scanner scan = new Scanner(System.in);
    int score = 0;

    while(score != -1){    // -1 경우에는 while문을 종료한다.
        System.out.println("점수를 입력해 주세요: ");
        score = scan.nextInt();
        // if or switch
        if(score >= 90) {
            System.out.println("수");
        } else if(score >= 80) {
            System.out.println("우");
        } else if(score >= 70) {
            System.out.println("미");
        } else if(score >= 60) {
            System.out.println("양");
        } else {
            System.out.println("가");    
        }    
    }            
}
  • switch문 일 경우
public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int N = 0;

        while(true) {
            System.out.print("점수를 입력하세요: ");
            N = sc.nextInt();
            switch(N/10) {
            case 10:
            case 9:
                System.out.println("수");
                break;
            case 8:

                System.out.println("우");
                break;
            case 7: 
                System.out.println("미");
                break;
            case 6:
                System.out.println("양");
                break;
            case 5: case 4: case 3: case 2: case 1:
                System.out.println("가");
                break;
            }
            if(N == -1) {
                break;
            }
        }
        sc.close();
    }
  1. 조건 1 처리법
while(score != -1){
    ...
}
  1. 조건 1 처리법
while(true){
    if(N == -1) {
        break;
    }
    ...
}

무한루프예제 (Ex18.java)

생일을 받아서 별자리를 보여주는 프로그램을 작성합니다.
무한루프이며 생월이 0일시에는 루프를 종료합니다.
또한 예외처리를 통해 잘못된 생월, 생일(13월 82일)같은 잘못된 값이 입력되지 않게 방지합니다.
public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        int month = 0;
        int day = 0;

        while (true) {
            // 생월 예외처리
            while (true) {
                System.out.print("월을 입력해주세요(0은 종료): ");
                month = scan.nextInt();

                if (month >= 0 && month <= 12) {
                    break;
                } else {
                    System.out.println("잘못입력하셨습니다. 다시입력 ");
                }
            }
            if (month == 0) {
                break;
            }

            // 생일 예외처리
            while (true) {
                System.out.print("생일을 입력하세요(0은 종료): ");
                day = scan.nextInt();

                if (day >= 0 && day <= 31) {
                    ...    // 별자리 switch문 생략 
                    break;
                } else {
                    System.out.println("잘못입력하셨습니다. 다시입력 ");
                }
            }
            if (day == 0) {
                break;
            }
        }
    }
반응형