[Java Basic] 조건문과 반복문

buckshot·2025년 5월 24일

JAVA

목록 보기
12/18

조건문

조건문은 조건식에 따라 다른 실행문을 실행하기 위해 주로 사용이 된다. 조건문의 종류로는 if문, switch문이 존재한다.

if문

if문은 조건식에는 참과 거짓이 반환되는 연산이나 boolean타입의 변수가 올 수 있다. 여기서 조건식이 참이거나 변수가 true일 경우 블록을 실행하고, 아닐경우 블록을 뛰어넘는다.

실행문A

if( 조건식 ) {
	실행문B
}

실행문C

위 처럼 구성이 되어 있을 때 조건식의 값에 따라 어떤 흐름을 갖는지 확인을 하면

  • 조건식이 참일 경우 : 실행문A -> 실행문B -> 실행문C 순서로 코드의 흐름을 갖게된다.
  • 조건식이 거짓일 경우 : 실행문A -> 실행문C 순서로 실행문B를 거치지 않고 바로 실행문C로 이동하여 동작하게 된다.

if - else문

추가적으로 조건문을 통해 실행문B를 실행시킬 경우 실행문C는 실행하지 않고, 실행문B를 실행하지 않을 경우 실행문C를 실행 시키는 방법은 어떻게 구성하는가? 라는 생각을 할 수 있다. 그럴 경우 if - else문을 이용하면 된다.

실행문A

if( 조건식 ) {
	실행문B
} else{
	실행문D
}
실행문C

// 조건식이 참일 경우 : 실행문A -> 실행문B -> 실행문C
// 조건식이 거짓일 경우 : 실행문A -> 실행문D -> 실행문C

if - else if - else문

if문뒤에 추가적인 조건을 붙이기 위해 사용되는 else if문을 제한 없이 붙여 여러 개의 조건문을 사용할 수 있다.

if( ) {
} else if( ) {
} else if( ) {
} else if( ) {
}

switch 문

switch문if문과 마찬가지로 조건 제어문 이다. 하지만 조건식의 값을 기준으로 실행문을 실행하는 방식이 아닌 변수가 어떠한 값을 갖느냐에 따라 실행문이 선택된다.

switch( 변수 ) {
	case1 : 실행문A		// 	변수의 값이 값1일 경우 실행문A 실행
	break;
	case2 : 실행문B		// 	변수의 값이 값2일 경우 실행문B 실행
	break;
	case3 : 실행문C		// 	변수의 값이 값3일 경우 실행문C 실행
	break;
	default : 실행문D		// 	변스의 값이 값A,B,C 외 다른 값일 경우 실행문D 실행
}

switch문은 변수의 값과 동일한 case로 이동하여 해당 실행문을 실행하게 된다. 만약 변수의 값이 case에서 해당하지 않는 경우 default로 이동하여 해당 실행문을 실행하게 되는 흐름이다.
또한 case와 case사이에 break;가 존재한다. 이는 해당 조건에 맞는 실행문을 실행하고 바로 switch를 빠져나오기 위해서 작성이 된다. 만약 break;가 없을 경우 다음 case로 이동하여 연달아 실행된다.


반복문

for문

for(int i = 0; i < n; i++) {	//for(초기화식; 조건식; 증감식) {
	System.out.println(i);		//	실행문
}

반복문 for문 은 아래와 같은 순서로 동작하게 된다.
1. 초기화식을 가장 먼저 실행한다.
2. 초기화된 변수를 갖고 조건식을 통해 검증을 한단.

  • 조건식이 참일 경우, 내부 실행문을 실행한다.
  • 조건식이 거짓일 경우, 내부 실행문을 실행하지 않고 반복문을 종료한다.
  1. 내부 실행문이 모두 실행 되었다면 증감식을 실행한다.
  2. 2번 과정으로 돌아가서 반복한다.

중첩 for문

for문 내부에 for문을 작성하여 중첩 반복문을 작성할 수 있다.

for(int i = 0; i < n; i++) {
	System.out.println(i);
	for(int j = 0; j < n; j++) {
		System.out.println(j);
	}
}

중첩 for문에서 외부 반복문이 한 번 실행할 때마다 내부 반복문이 지정된 횟수 만큼 반복해서 돌고 다시 외부 반복문이 동작하게 된다.

while문

for문은 지정된 횟수만큼 반복을 하지만, while문은 지정된 횟수만큼 반복하는 것이 아니고 조건식이 참이될 경우 계속 반복하게 된다.

while( 조건식 ) {
	실행문
}

while문 동작은 for문보다 간단하게 동작을 한다.

  1. 조건식 검증
    • 조건식이 참일 경우, 내부 실행문 실행
    • 조건식이 거짓일 경우, 내부 반복문 실행하지 않고 반복문 종료
  2. 내부 실행문이 실행이 끝나면 다시 조건식을 다시 검증하여 내부 실행문을 실행 또는 종료를 한다.

do - while문

do - while문은 조건식에 의해 반복 실행한다는 점은 while문과 동일하다. 하지만 do - while문은 내부 실행문을 우선 실행을 하고 실행 결과에 따라 반복 실행을 계속 할지 결정할 수 있도록 한다.

do{
	실행문A
} while(조건식);
  1. 우선적으로 내부 실행문을 실행한다.
  2. 내부 실행문이 실행이 끝나면 조건식을 검증한다.
    • 조건식이 참일 경우, 실행문 -> 조건식 동작을 반복한다.
    • 조건식이 거짓일 경우, 반복문을 종료한다.

Break문

개인적으로 반복문을 사용할 때 가장 중요하다고 생각되는 것이 break문이라고 생각한다. 그 이유는 break문을 이용하여 무한 반복될 수 있는 반복문을 방지할 수 있다.

break문사용은 조건문과 같이 사용하여 특정 조건에서 반복문을 빠져나올 수 있는 출구를 만들거나, 중첩 반복문에서 특정 조건에서 내부 반복문을 탈출하여 외부 반복문을 바로 동작할 수 있도록 만들수 있다.

for(int i = 0; i < n; i++) {
	System.out.println(i);
	for(int j = 0; j < n; j++) {
		System.out.println(j);
		if( i == 3 && j == 3) {
			break;
		}
	}
}

간단한 예제로 위 코드를 보면, 조건문을 사용하여 변수 i, j가 모두 정수 3과 동일 할 경우 break가 동작하도록 했다.
이 경우 변수 i와 j가 모두 3일 경우에 내부 반복문을 종료가 되어 다음 출력에서 i의 값은 4, j의 값은 0이 출력된다.

그런데 break문을 사용하여 내부 반복문이 아닌 외부 반복문을 종료하고 싶을 때 어떻게 작성을 해야 하는가? 라는 궁금증이 생길 수 있다.

그럴 경우에는 외부 반복문 선언한 줄 앞 부분에 라벨을 붙여 brack문 뒤에 외부 반복문 라벨을 붙여주면 된다.

Label: for(int i = 0; i < n; i++) {
	System.out.println(i);
	for(int j = 0; j < n; j++) {
		System.out.println(j);
		if( i == 3 && j == 3) {
			break Label;
		}
	}
}

위 처럼 작성하게 된다면 조건문을 통해서 외부 반복문이 종료하게 된다.

continue문

break문을 통해서 특정 타이밍에 반복문을 종료 시키는 방법을 알았다. 그러면 특정 조건일 때 실행하지 않고 바로 다음 동작으로 시킾하고 싶을 때는 어떻게 작성할 지 궁금할 것이다.

물론 if-esle문을 통해서 작성할 수 있다.

for(int i = 0; i < n; i++) {
	for(int j = 0; j < n; j++) {
		if( i != 3 && j != 3) {
			실행문
		}
	}
}

이렇게 작성하게 된다면 변수 i와 j의 값이 3이 아닐 경우에만 실행문이 실행 된다. 그러면 원하는 방법대로 동작을 하게 된다. 하지만 이 방법으로 작성할 때 조건문이 길어지거나 실행문이 길어질 경우에는 가독성이 떨어지게 된다는 단점이 존재한다.

그렇기 때문에 가독성을 높고, 작성하기 편한 continue문을 사용하면 된다.

for(int i = 0; i < n; i++) {
	for(int j = 0; j < n; j++) {
		if( i == 3 && j == 3) {
			continue;
		}
		실행문
	}
}

이 처럼 작성하게 되면 조건을 부정형으로 감싼 복잡한 if문 없이 예외적인 상황을 명확하게 걸래내며 가독성 좋게 작성할 수 있다.

profile
let's go insane

0개의 댓글