for문 

조건을 만족하는 동안 블럭{}을 반복 - 반복횟수를 알 때 적합

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

    수행될문장

}

 

ex) for (int i =1; i<=5; i++) {             // 1부터 5까지 1씩 증가
            System.out.println("I can do it.");
 }

 

중첩 for문

for문 내에 또 다른 for문을 포함시킬 수 있다

for(int i = 1; i<=9; i++){

    for(int j= 1; j<=9; j++){

       System.out.println( i + "*" + j + "=" +( i * j ));

    } 

    System.out.println();

}

 

While문 

조건을 만족시키는 동안 블럭{}을 반복 - 반복횟수를 모를 때 or 무한루프문에서 사용

while (조건식) {

    // 조건식의 연산결과가 참(true)인 동안, 반복될 문장들을 적는다. 

}

 

ex)   1부터 몇까지 더해야 100을 넘지 않는지 알아내는 예제

100까지 도달하려면 몇번을 반복해야 할지 모르므로 for문 대신 while문을 사용.

public class Ex04_13 {

	public static void main(String[] args) {
		
	int sum = 0;
	int i = 0;
	// i를 1씩 증가시켜서 sum에 계속 더해간다.
	while (sum <=100) {
		System.out.printf("%d - %d%n", i, sum);
		sum += i++;
		}
	}
}

100이하의 조건이므로 i = 13이 되면 (1~13)의 합인 91로 마무리 된다. ( i = 14일 때 105이므로 조건인 100을 넘김)

 

do-while문 

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

do{

    // 조건식의 연산결과가 참일 때, 수행될 문장들을 적는다. (처음 한번은 무조건 실행) 

} while(조건식);

 

break문

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

ex) 숫자를 1부터 계속 더해 나가서 몇까지 더하면 합이 100을 넘는지 알아내는 예제.

public class Ex04_16 {

	public static void main(String[] args) {
		
	int sum = 0;
	int i =0;
	
	while(true) {
		if(sum > 100)  
			break;   // break가 수행되면 밑에 내용은 실행x
		++i;
		sum += i;
		} //end of while
	
		System.out.println("i=" + i);
		System.out.println("sum=" + sum);
	}
}     // 결과 i = 10 // sum = 105

while(true) 와 같이 무한 반복문에는 조건문과 break문이 항상 같이 사용된다.

 

continue문 

자신이 포함된 반복문의 끝으로 이동 - 다음 반복문은 넘어감 

전체 반복 중에서 특정 조건시 반복을 건너뛸 때 유용

public class Ex04_18 {

	public static void main(String[] args) {
		
	for(int i = 0; i <= 10; i++) {
		if (i%3==0)
			continue;  // 조건식이 참이되어 continue가 실행되면
			           // 블럭의 끝으로 이동 후 다시 반복문 실행
		System.out.println(i);
		
		}
	}
}				// 결과 1 2 4 5 7 8 10 (3의 배수 제외하고 출력)

1과 10사이의 숫자를 출력하되 그 중에서 3의 배수인 것은 제외하도록 하였다.

주로 if문과 함께 사용되어 특정 조건을 만족하는 경우에 continue문 이후의 문장을 수행하지 않고 반복문을 다시 실행.

 

이름붙은 반복문 

여러 개의 반복문이 중첩된 경우에는 break문으로 중첩 반복문을 완전히 벗어날 수 없다.

이때는 중첩 반복문 앞에 이름을 붙이고 break문과 continue문에 이름을 지정해준다. 

public class Ex04_19 {

	public static void main(String[] args) {
		
		Loop1 : for(int i = 2; i <= 9; i++) {    // for문에 Loop1이라는 이름을 붙여줌
			for(int j =1; j <= 9; j++) {
				if(j==5)
					break Loop1;
				
				System.out.println(i + "*" + j + "=" + i*j);
			}
			System.out.println();
		}
		
		
	}    //결과     2*1=2 , 2*2=4 , 2*3=6 , 2*4=8 
}

j가 5일 때 반복문 Loop1을 벗어나도록 했으므로 2단의 4번째 줄까지만 출력이 되었다.

만일에 Loop1을 안적은 break문이라면 2단부터 9단까지 모두 네 줄씩 출력된다.  ( => 이름붙은 반복문의 필요성)