고래씌

[JAVA] 4-4. 제어문(while문), break, continue 본문

JAVA/JAVA 기초

[JAVA] 4-4. 제어문(while문), break, continue

고래씌 2023. 10. 6. 14:30

1. while문

[표기법]

 

[초기식;] // 필수가 아님

while(조건식) {  // 조건식의 결과가 true일 경우 while문의 중괄호 블럭안의 내용이 반복적으로 실행된다.

        반복적으로 실행할 코드들

[증감식;]  // 필수가 아님

}

public void method1() {
    // for문을 while문으로, while문을 for문으로 변경해보기
//		for(int i=0; i<5; i++) {
//			System.out.println("안녕하세요");
//		}
//		
//		int i = 0; // 초기식
//		
//		while(i<5) {   // 조건식
//			System.out.println("안녕하세요");
//			i++;
//		}

    for(int i=1; i<10; i+=2) {
        System.out.println(i + " ");
    }

    int i =1;
    while(i<10) {
        System.out.print(i + " ");
    }
}

 

□ random 함수를 이용한 while문

public void method3() {
    // 1부터 랜덤값(1~100) 까지의 총 합계

    // while 으로 작성

    // 출력예시 : 1부터 random까지의 총 합계 : sum

    int random = (int) (Math.random()*100 + 1);


    // 방법1
    int i = 1;
    int sum = 0;
//		while(i<=random) {
//			sum += i;
//			i++;
//		}


    //방법 2
    int initrandom = random;

    while(random > 0) {
        sum += random--;
    }
    System.out.printf("1부터 %d까지의 총 합계 : %d", initrandom, sum);
}

 

□ A_for 클래스의 10번 메소드를 while 문으로 바꾸기

public void method4() {
    // A_for클래스의 10번 메소드를 while문으로 바꾸기

    // 다른 패키지의 있는 것을 사용할 때, 패키지 경로 까지 포함하게 된다면 사용가능!
    java.util.Scanner sc = new java.util.Scanner(System.in);


    System.out.print("문자열 입력: ");
    String str = sc.nextLine();


//		for(int i=0; i<=str.length()-1; i++) {   
//			System.out.println(str.charAt(i));

    int i = 0; // 조건식
    while(i<=str.length() -1) { // 조건식
        // 실행할 코드
        System.out.println(str.charAt(i));
        i++;
    }
}

2. do-while문

[표현법]

do {         // 조건검사 없이 무조건 1번은 실행한다. => 조건식 결과가 fasle더라도 한번은 반드시 수행함

     실행할 코드

}while(조건식); // 조건식의 결과가 true면 실행할 코드 실행

                        // 조건식의 결과가 false면 반복문 빠져나옴

 

※ for/while문과 do-while문의 차이점

for/while문은 처음 시작할 때부터 조건검사를 하고 반환값이 true여야 실행을 함

do-while문첫실행은 무조건 조건검사 없이 실행된다.

public void method5() {
    int num = 900;
    do {
        System.out.println("하이");
    }while(num == 0); //false

}

 

3. break

1) break;

- break문을 만나는 순간 현재 속해있는 반복문을 빠져나감

- 주의할 점 : switch문 안의 break와는 다른 개념

- switch문안의 break는 해당 switch문만 빠져나가는 용도.

 

Q. 매번 반복적으로 == 무한 반복
    발생되는 랜덤값(1~100)을 출력
    단, 랜덤값이 3의 배수일경우 반복문을 종료.

public void method1() {
    // 매번 반복적으로 == 무한 반복
    // 발생되는 랜덤값(1~100)을 출력
    // 단, 랜덤값이 3의 배수일경우 반복문을 종료.

    while(true) {   // 무한반복
        // 랜덤값 추출
        int random = (int)(Math.random() * 100 + 1);

        // 랜덤값 출력
        System.out.println("random : " + random);

        // 랜덤값이 3의 배수인지 검사
        if(random % 3 == 0) {
            break;  // 반복문 종료
        }
    }
}

Q. 매번 사용자에게 문자열을 입력 받은 후 해당 문자열과 문자열의 길이 출력
    단, 사용자가 입련한 문자열이 exit인 경우는 반복문 종료

public void method2() {
    Scanner sc = new Scanner(System.in);

    while(true) {
        // 매번 사용자에게 문자열을 입력 받은 후 해당 문자열과 문자열의 길이 출력
        // 단, 사용자가 입련한 문자열이 exit인 경우는 반복문 종료

        System.out.print("문자열 입력 : ");
        String str = sc.nextLine();

        if(str.equals("exit")) {
            break;
        }
        System.out.println(str + "의 길이는 : " + str.length());
    }
}

 

Q. 매번 반복적으로 사용자에게 양수를 입력받아 1 ~ 사용자가 입련한 수까지 출력
    단, 정상적으로 양수를 입력했을 시에만 1~ 사용자가 입력한 수까지 출력을 한 후 종료
    양수가 아닌 숫자를 입력 시 "잘못입력했습니다. 다시 입력해주세요" 출력

public void method3() {
    // 매번 반복적으로 사용자에게 양수를 입력받아 1 ~ 사용자가 입련한 수까지 출력
    // 단, 정상적으로 양수를 입력했을 시에만 1~ 사용자가 입력한 수까지 출력을 한 후 종료
    // 양수가 아닌 숫자를 입력 시 "잘못입력했습니다. 다시 입력해주세요" 출력
    // 무한반복 + break 를 이용

    Scanner sc = new Scanner(System.in);

    while(true) {
        System.out.print("1 ~ 양수 입력 : ");
        int num = sc.nextInt();
        if(num > 0) {
            for(int i = 1; i<=num; i++) {
                System.out.print(i +" ");
            }
            break;
        }
        System.out.println("잘못입력했습니다. 다시 입력해주세요");
    }
}

4. Continue

1) continue; : 반복문 안에서 사용하는 구문

                      continue를 만나게 되면 그 다음에 어떤 코드가 있던 간에 실행하지 않고 가장 가까운 반복문으로 올라감.

 

Q. 1부터 100까지의 총 합계
    단, 6의 배수값은 빼고 더하기
    반복문 내부에 continue문을 활용해서 코드를 작성하기
   출력예시 : 총합계 : xx

public void method2() {
    // 1부터 100까지의 총 합계
    // 단, 6의 배수값은 빼고 더하기
    // 반복문 내부에 continue문을 활용해서 코드를 작성하기
    // 출력예시 : 총합계 : xx

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

        if(i % 6 != 0) {
            sum += i;
        }else {
            continue;
        }
    }
    System.out.println("총합계는 : "+sum);
}

Q. 2단 ~ 9단까지 모든 구구단을 출력 하되, 4의 배수단은 제외하고 출력
    (continue문 사용)

public void method3() {
    // 2단 ~ 9단까지 모든 구구단을 출력 하되, 4의 배수단은 제외하고 출력
    // (continue문 사용)

    for(int i=2; i<=9; i++) {
        if(i % 4 == 0)
            continue;

        for(int j=1; j<=9; j++) {
            System.out.printf("%d * %d = %d\n",i, j, i*j);
        }
    }
}

 

'JAVA > JAVA 기초' 카테고리의 다른 글

[JAVA] 5-1. 배열 실습문제  (0) 2023.10.11
[JAVA] 5. 배열  (0) 2023.10.10
[JAVA] 4-4. 제어문(반복문 실습문제)  (0) 2023.10.06
[JAVA] 4-3. 제어문(for 문)  (0) 2023.10.05
[JAVA] 4-2. 제어문(실습문제)  (0) 2023.10.05