CH 4) 반복문

sim·2023년 2월 28일

자바의 정석

목록 보기
9/20

반복문

: 어떤 작업이 반복적으로 수행되도록 할 때

  • for문 : 반복 횟수를 알고 있을 때
  • while문 : 반복 횟수를 알지 못할 때

➰ for문

: 조건을 만족하는 동안 블럭{}을 반복

for (초기화; 조건식; 증감식) { (조건식이 참(true)인 동안 수행될 문장들)}

	for (int i=1; i<=3; i++) {
		System.out.println("Hello");
    } // Hello 3번 출력

1) 초기화
: 반복문에 사용될 변수를 초기화. 둘 이상의 변수가 필요할 때는 콤마로 구분 (단, 두 변수의 타입은 같아야함) (ex. for(int i=1, j=0; i<=10; i++))

2) 조건식
: 조건식의 값이 참이면 반복을 계속하고, 거짓이면 반복을 중단. 조건식이 생략되면 참으로 간주되어 무한 반복문이 됨.

3) 증감식
: 반복문을 제어하는 변수의 값을 증가 또는 감소시키는 식.
ex. i++ (1씩 증가), i+=2(2씩 증가), i*=3 (3배씩 증가)

> 세가지 요소는 필요하지 않을 경우 생략 가능

*scope(범위) - 선언위치부터 선언된 블럭의 끝까지.

➰ 중첩 for문

: for문 내에 또 다른 for문을 포함시킴. 중첩횟수는 거의 제한이 없음.

ex. 5행 10열의 별찍기

for (int i=1; i<=5; i++) {
	for (int j=1; j<=i; j++) {
    	System.out.print("*");
    }
	System.out.println();
}
/* 출력 결과 
*
**
***
****
*****
*/

➰ while문

: 조건식이 '참'인 동안 블럭 내의 문장 반복

while (조건식) { (조건식의 연산결과가 참인동안, 반복될 문장들) }
거짓이면 while문을 벗어난다.

ex. 각 자리수의 합 구하기.

int num =0, sum =0; 
System.out.print("숫자를 입력하세요.(예. 12345)>");
Scanner scanner = new Scanner(System.in);

String tmp = scanner.nextLine(); 
num = Integer.parseInt(tmp); //입력받은 문자열(tmp)을 숫자로 변환

while (num!=0) {
	// num을 10으로 나눈 나머지를 sum에 더함 
	sum += num%10;
    System.out.printf("sum=%3d num=%d%n", sum, num);
    // num을 10으로 나눈 값을 다시 num에 저장
    num/=10; 
    }
    Sytem.out.println("각 자리수의 합:"+sum);
}

➰ do-while문

: 블럭{}을 최소한 한 번 이상 반복 - 사용자 입력받을 때 유용

do { (조건식의 연산결과가 참일 때 수행될 문장들)(처음 한 번은 무조건 실행)
} while (조건식);

int input = 0, answer = 0;

answer = (int)(Math.random()*100) +1; //1~100사이의 임의의 수 저장
Scanner scanner = new Scanner(System.in);

do {
	System.out.print("1과 100사이의 정수를 입력하세요>");
    input = scanner.nextInt();
    
    if (input>answer) {
    	System.out.println("더 작은 수로 시도해보세요.");
    } else if (input <answer) {
    	System.out.println("더 큰 수로 시도해보세요.");
    }
} while (input != answer);

System.out.println("정답입니다.");

➰ break문

: 자신이 포함된 가장 가까운 반복문을 벗어난다.

➰ continue문

: 자신이 포함된 반복문의 끝으로 이동 - 다음 반복으로 넘어감. 전체반복 중에서 특정 조건을 만족하는 경우 건너뛸 때 유용

➰ 이름 붙은 반복문

: 반복문에 이름을 붙여서 하나 이상의 반복문을 벗어날 수 있다.

Loop1 : for (int i=2; i<=9; i++) {
		for (int j=1; j<=9; j++) {
           	if (j==5)
            	break Loop1;
            System.out.println(i+"*"+j+"="+i*j);
        }
        System.out.println();
}
profile
sim

0개의 댓글