[Java] 반복문 (for, while)

<p>[Java] 반복문 (for, while)

자바의 반복문에 대해 알아보자.

조건문과 함께 제어문에 속하는 반복문을 알아본다.
반복문은 같은 기능을 반복해서 사용해야 할 때 보다 편리하게 쓸 수 있게 해준다.

for문

기본적인 반복문인 for문이다.
조건을 만족하지 않을때 까지 문장을 반복시키기 위한 용도이다.

for문의 기본 구조

for문의 기본 형태는 for (초기값; 실행(종결)조건문; 증감치) {
  //()안 문장이 참이 아닐때 까지 반복될 문장
}

for문의 사용 예제

for (int i=0; i<10; i++) {              // i가 0부터 9까지 차례로 1씩 증가
	System.out.println("*****");    // "*****"를 총 10번(0 ~ 9) 반복하여 출력
}

if문과 함께 사용하는것도 가능하다

//for문 : 1~10 숫자 중 짝수를 출력(2,4,6,8,10)
for (int i=1; i<=10; i=i++) {
  if(i%2 == 0){}                    // i를 2로 나눈 나머지가 0이면,
	  System.out.println(i);    // i값을 출력
  }
}

2중 for문

for문은 for문 안에 if문, while문, for문 등
for문 안에 여러 조건문 또한 올 수 있다.
for문 안에 for문이 들어간 경우를 2중 for문이라 한다.

2중 for문 사용 예제

for (int i=0; i<5; i++){       // *    
  for (int j=0; j<i; j++){     // **  
    System.out.print("*");     // ***     이와 같은 모양 출력
  }                            // ****   
  System.out.println();        // ***** 
}
2 for문을 배울  모두  번쯤 출력해보는 별로 모양 만들기다.
이를 응용하여 여러 모양을 만들  있다.
int spaceCnt = 0;
int starCnt = 5;

for (int line=1; line<=5; line++) {
	for (int space=1; space<=spaceCnt; space++) {   // " " 갯수를 반복문 처리
		System.out.print(" ");                        
	}
	for (int star=1; star<=starCnt; star++) {       // "*" 별 갯수 처리
		System.out.print("*");                        
	}                                              // *****     
	System.out.println();                          //  ****         
	spaceCnt++;                                    //   ***   이와 같은 모양 출력  
	starCnt--;                                     //    **  
}    

for문을 이용한 구구단 만들기

for문을 이용해 구구단 만드는 예제


          // 구구단 말머리에 붙을 타이틀을 출력하는 for문
for(int i=2; i<=9; i++) {           
		System.out.print("--"+i+"단--");          // --2단--\t--3단--\t--4단-- ... --9단-- 
		System.out.print("\t");                   // 위와 같이 출력
	}
System.out.println();

for (int i=1; i<=9; i++) {                                      // i는 단 수에 곱해지는 수 (j * 1 ... j * 9)     
	for (int j=2; j<=9; j++) {                              // j는 2~9까지 (2단 ~ 9단)      
		if ((j*i)<10) {                                 // 곱셈 결과가 10 미만일 때 (한 자리수 일 때)              
			System.out.print(j+"*"+i+"= "+(j*i));   // "=" 뒤에 " "를 추가 (자리수 정렬)                      
			System.out.print("\t");                             
		} else {                                          
			System.out.print(j+"*"+i+"="+(j*i));    // 곱셈 결과가 10 이상일 때              
			System.out.print("\t");                 // 5*3=15  이와 같이 출력          
		}                                                     
	}                                                     
	System.out.println();                                             
}             

while문

반복문의 일종으로 for문보다 조금 더 간결하게 사용할 수 있다.

while문의 기본 구조

while (실행조건문) {
	조건문변수 증감설정 (반복문시작 지검 - 선택)
	실행할 문장;
	조건문변수 증감설정 (반복문끝나는 지점 - 선택)
}

while문의 경우 기본적으로 for문과 같이 ()안에 증감치가 들어가지 않아
실행문 안에서 증감치를 설정해줘야 한다.
()안의 조건문이 true일 경우 {}안의 문장이 무한히 실행되기 떄문에
증감치나 break문 등 반복문을 빠져나갈 수단이 반드시 하나 이상 필요하다.
while문도 for문과 같이 while문 안에 여러 조건문이 들어갈 수 있다.

while문의 사용 예재

int num = 1;
while (num <=10) {
	System.out.print(num + " ");
	num++;
}
for문과 같은 방식으로 사용하려면 위와 같이
반복문 외부에서 변수의 초기값을 설정해주어야 한다.

while문을 이용한 무한 반복문

int num = 1;
while(true) {             // ()안을 true로 설정하여 무한 반복
  System.out.print(num + " ");
  if (num == 5) break;    // break문을 만나면 반복문을 빠져나옴
  num++;                  // 증감치를 설정해주지 않으면 무한히 같은 문장만 실행
}
위와 같이 while문 안에 if문(조건문) 들어갈  있다.

do ~ while문

do ~ while문은 실행될 문장을 do문 뒤에 작성하고
뒤에 while문에서 조건을 설정하는 형태로
do문이 최소 1회 이상 실행될 수 밖에 없다.

do ~ while문 기본 구조

do {                      // 초기에 실행할 문장을 작성
	증감치 설정(실행명령문 /)
	실행할 명령문;
} while (조건문);         // 뒤쪽에 반복문의 조건문을 장성

do ~ while문은 위와같이 while문을 뒤로 뺌으로서
조건을 나중에 설정하는 형태이다.

do ~ while문 사용 예제

num = 1;
do {
	System.out.println("do ~ while : "+ num);
	num++;
} while (num<=10);
	                // 이와같이 기본 틀은 while문과 크게 다를바 없지만
num = 0;                // 조건을 마지막에 붙여준다는 점에서 차이가 생긴다. 
do {
	num++;
	System.out.println("do ~ while : "+ num);
} while (num<10);

© 2018. All rights reserved. Polog by Soowan Kim.

Powered by Hydejack v8.2.0