JAVA

[JAVA와 친해지기] 반복문

컴퓨터가 인간보다 뛰어난 것, 그중 하나는 엄청난 연산능력과 함께 반복되는 일을 불평하지 않고 처리한다는 점일 겁니다. 프로그래밍에는 이러한 컴퓨터의 특징을 살려 "반복"을 지정하는 특별한 문법을 언어마다 제공하고 있습니다. 이번 시간 우리는 JAVA에서의 반복문의 문법과 사용방법을 알아보도록 하겠습니다.

 

* 본 포스팅은 Advanced for를 다루고 있지 않습니다.


for문

반복문의 대표주자, 사실 for문만 잘 쓸 줄 알아도 프로그래밍 언어에서 반복에 관한 흐름 제어를 하는 것은 누워서 떡먹기입니다. 문법부터 살펴보겠습니다.

 오호; 뭐가 문법적인 의미를 담고 있는 낯선 단어들이 보입니다. 위의 뜻은 아래와 같습니다.

"초기값부터, 증감을 하며 조건에 맞을 때동안 반복 내용을 실행하라" 

사용 예시로 확인해 보겠습니다. 아래는 1부터 100까지 더하고 그 결과를 출력하는 JAVA코드입니다.

// SumToHund.java

public class SumToHund{
	public static void main(String[] args){
		int sum=0;	// 결과저장값 sum, 0으로 초기화 합니다.
		int i=0;		// 반복자로 사용할 반복변수

		for(i=1;i<=100;i++){	//i가 1부터 i++을 해나가면서(1씩 증가) i가 100보다 작거나 같을동안 실행
			sum += i;	// sum에 i를 더함
		}
			
		System.out.println("Total result of sum Hundred : "+sum);
	}
}
//출력

Total result of sum Hundred : 5050

위의 코드 SumToHund.java를 통해서 FOR의 용법을 살펴보았습니다! 반복자의 이름은 꼭 i가 아니어도 되며, 반복자 변수 선언은 아래와 같이 for문 안에서도 가능하다는 점(이게 훨씬 간결합니다!) 알아두시기 바랍니다! 

// SumToHund2.java

public class SumToHund2{
	public static void main(String[] args){
		int sum=0;

		for(int i=1;i<=100;i++){	//for문에서 반복자 변수 선언 
			sum += i;
		}
			
		System.out.println("Total result of sum Hundred : "+sum);
	}
}

while문, do~while문

보다 간단한 반복문도 존재합니다. 바로 조건만 지정하여, 조건이 참인동안 반복문을 실행하는 while문인데요, 사용 문법은 아래와 같습니다.

코드 예시로 자세하게 알아보겠습니다.

// WhileToHund.java

public class WhileToHund{
	public static void main(String[] args){
		int sum=0;		// 결과저장값 sum, 0으로 초기화 합니다.
		int index = 100;

		while(index>0){		// for문과 다르게 조건만지정, 이 반복문은 index가 0이상인 한 계속실행된다.
			sum += index;
			index--;	// sum에 index를 더한 이후 index를 빼주는 코드줄
		}

		System.out.println("Total sum of Hund : "+sum);
	}
}
// 출력

Total sum of Hund : 5050

while은 무조건 한 번은 실행되게 할 수 있는 변형 문법이 존재합니다! 바로 do~while문법인데요

// DoWhileToHund.java

public class DoWhileToHund{
	public static void main(String[] args){
		boolean trigger = false;

		while(trigger){	// while문 조건에 false를 넣은 경우, while은 아예 실행되지 않는다.
			System.out.print("FASLE OUTPUT from WHILE");
		}

		do{		// do while문 조건에 false를 넣은 경우, do while은 거짓이더라도 한번은 실행된다.
			System.out.print("FASLE OUTPUT from DO WHILE");
		}while(trigger);

	}
}
//출력

FASLE OUTPUT from DO WHILE

do while문 끝에 문장끝을 의미하는 세미콜론(;)에 유의해 주세요!


반복 제어(break, continue)

반복문을 실행하는 도중 특별한 상황이 되면, 반복문을 종결하거나 일정한 반복문은 건너뛰고 싶은 경우도 있을 것입니다. 이를 위한 반복문 내부에서만 쓸 수 있는 특별한 키워드가 있는데요, 바로 break문과 continue문입니다.

 

break의 예시부터 보겠습니다.

// BreakExample.java
// 1~50까지 더하는 경우, 100까지 루프를 돌지만 50이 되면 반복을 그만둔다.

public class BreakExample{
	public static void main(String[] args){
		int sum=0;
	
		for(int i=1;i<=100;i++){
			sum += i;
			if(i==50){
				break;	// break는 가장 가까이 있는 반복문을 탈출한다.
			}
		}
		System.out.println("탈출한 반복문은 여기로 : "+sum);
	}
}
//출력

탈출한 반복문은 여기로 : 1275

break를 이용해서 100까지 돌아야되는 루플을 i가 51일 때 탈출한 코드 예시입니다. 다음은 continue의 문법을 보도록 하겠습니다.

* for문 마지막에 설명한것 처럼, 반복문 문법 안에서 반복자를 선언할 수 있습니다.

// ContinueExample.java
// 1~100까지의 홀수를 더하는 경우, 짝수인 경우 다음 스텝으로 넘어간다.

public class ContinueExample{
	public static void main(String[] args){
		int sum=0;
	
		for(int i=1;i<=100;i++){
			if(i%2==0){
				continue;
			}
			sum += i;
		}
		System.out.println("ODD SUM : "+sum);
	}
}
//출력

ODD SUM : 2500

위의 코드는 1~100까지 홀수만을 더하여 출력하는 코드입니다. 반복문 for안의 조건문(if)으로 i를 2로 나눈 결과가 0인(짝수)인 경우 continue를 통해서 다음 루프 스텝으로 강제 이동하도록 하였습니다. 이경우 continue아래 있는 코드는 자연스럽게 무시됩니다.


무한루프

루프의 경우 강제로 끝나지 않는 루프를 생성할 수 있습니다. 이렇게 생성되는 경우를 무한루프라고 부르는데요, 보통 사용자의 입력을 기다리고 있거나, 프로그램이 백그라운드에서 계속실행되어야하는경우, 내부적으로 이 "무한루프"가 어딘가에 구현되어있는것을 알 수 있습니다 아래는 무한루프의 예시입니다. while조건에 true를 정적으로 대입하여 무조건 루프를 실행하게 하였습니다.

// InfiniteLoop.java
// 무한히 I LOVE JAVA를 출력하는 코드

public class InfiniteLoop{
	public static void main(String[] args){
		while(true){
			System.out.println("I LOVE JAVA!");
		}
	}
}
//출력 

I LOVE JAVA!
I LOVE JAVA!
I LOVE JAVA!
I LOVE JAVA!

...


I LOVE JAVA!
I LOVE JAVA!
I LOVE JAVA!

...

이번시간에는 JAVA에서 사용하는 반복문인 for, while, do~while과, 반복제어문인 break, continue 또한 무한루프의 개념과 사용방법까지 알아보았습니다. 다음시간에는 배열에 대해서 알아보도록 하겠습니다!

'JAVA' 카테고리의 다른 글

[JAVA와 친해지기] 클래스와 객체  (0) 2021.12.01
[JAVA와 친해지기] 배열  (0) 2021.08.24
[JAVA와 친해지기] 흐름제어문  (0) 2021.08.19
[JAVA와 친해지기] 연산자  (4) 2021.08.18
[JAVA와 친해지기] 자료형  (0) 2021.08.17