C# 반복문에서 break와 continue 사용법
break
- 가장 가까운 바깥쪽 반복문 또는
switch
문을 종료합니다. - 종료된 문 다음에 오는 문으로 제어 흐름을 이동합니다 (있는 경우).
예시:
for (int i = 0; i < 10; i++)
{
if (i == 5)
{
break; // 반복문 탈출
}
Console.WriteLine(i);
}
위 코드는 0부터 9까지 숫자를 출력하는 for
루프입니다. 하지만 i
가 5가 되면 break
키워드를 만나 루프를 탈출하고 다음 문 (본 예시에서는 없음)으로 이동합니다. 결과적으로 0부터 4까지만 출력됩니다.
continue
- 현재 반복의 나머지 부분을 건너뛰고 다음 반복으로 이동합니다.
- 반복문 자체를 종료하지 않습니다.
for (int i = 0; i < 10; i++)
{
if (i % 2 == 0)
{
continue; // 짝수는 건너뛰고 다음 반복으로 이동
}
Console.WriteLine(i);
}
위 코드는 0부터 9까지 숫자를 출력하는 for
루프입니다. 하지만 i
가 짝수일 때 continue
키워드를 만나 해당 반복의 나머지 부분을 건너뛰고 다음 반복으로 이동합니다. 결과적으로 홀수만 출력됩니다.
사용 가이드라인
- break:
- 조건에 맞는 특정 반복만 수행하고 싶을 때 사용합니다.
- 중첩 루프에서 특정 조건을 충족하면 바깥쪽 루프까지 탈출하고 싶을 때 사용합니다.
- continue:
- 특정 조건에 해당하는 반복만 건너뛰고 싶을 때 사용합니다.
- 반복 횟수를 줄이고 싶지만 루프 자체는 종료하고 싶지 않을 때 사용합니다.
주의:
break
와continue
는 반복문 내에서만 사용할 수 있습니다.continue
는 루프 조건을 검사하지 않고 다음 반복으로 이동합니다. 따라서 무한 루프에 빠질 수 있으므로 주의해서 사용해야 합니다.
예제 코드: break와 continue 활용
특정 숫자까지 출력하기 (break 사용)
for (int i = 1; i <= 10; i++)
{
if (i > 5)
{
break; // 6 이상은 출력하지 않고 루프 탈출
}
Console.WriteLine(i);
}
출력:
1
2
3
4
5
짝수만 출력하기 (continue 사용)
for (int i = 1; i <= 10; i++)
{
if (i % 2 == 0)
{
continue; // 짝수는 건너뛰고 다음 반복으로 이동
}
Console.WriteLine(i);
}
1
3
5
7
9
string[] words = { "안녕", "하세요", "반갑습니다", "C#", "!", "한국어" };
foreach (string word in words)
{
if (word == "!")
{
break; // "!" 만나면 루프 탈출
}
Console.Write(word + " ");
}
안녕 하세요 반갑습니다 C#
int[] numbers = { -5, 10, 23, 0, -1, 77 };
foreach (int number in numbers)
{
if (number < 0)
{
continue; // 음수는 건너뛰고 다음 반복으로 이동
}
Console.WriteLine(number);
}
10
23
0
77
특정 조건 충족 시 루프 탈출 및 메시지 출력 (break 사용)
int[] scores = { 80, 65, 90, 75, 50 };
for (int i = 0; i < scores.Length; i++)
{
if (scores[i] < 70)
{
Console.WriteLine("70점 미만 점수 발견! 루프 종료합니다.");
break; // 70점 미만 점수 발견하면 루프 탈출
}
Console.WriteLine($"학생 {i + 1}의 점수: {scores[i]}");
}
학생 1의 점수: 80
학생 2의 점수: 65
학생 3의 점수: 90
70점 미만 점수 발견! 루프 종료합니다.
무한 루프에서 특정 조건 충족 시 탈출 (continue 사용)
while (true)
{
int number = Random.Next(10);
Console.WriteLine($"랜덤 숫자: {number}");
if (number == 5)
{
Console.WriteLine("5가 나왔습니다! 루프 탈출합니다.");
break; // 랜덤 숫자가 5가 되면 루프 탈출
}
}
랜덤 숫자: 7
랜덤 숫자: 3
랜덤 숫자: 6
랜덤 숫자: 9
랜덤 숫자: 5
5가 나왔습니다! 루프 탈출합니다.
if
문을 사용하여 조건에 따라 루프 내부 코드를 선택적으로 실행합니다.break
대신if
문으로 조건을 판단하고 루프 탈출 여부를 결정합니다.continue
대신if
문으로 조건을 판단하고 해당 반복 건너뛰기를 결정합니다.
// break 대신 if 문 사용
for (int i = 0; i < 10; i++)
{
if (i == 5)
{
// 6 이상은 출력하지 않고 루프 탈출
goto endLoop; // 루프 끝으로 이동
}
Console.WriteLine(i);
}
endLoop: ; // 루프 끝 표시
// continue 대신 if 문 사용
for (int i = 1; i <= 10; i++)
{
if (i % 2 == 0)
{
// 짝수는 건너뛰고 다음 반복으로 이동
continue;
}
Console.WriteLine(i);
}
루프 조건 변경:
- 루프 조건을 변경하여 원하는 반복 횟수 또는 조건을 제어합니다.
break
대신 루프 조건을 조절하여 필요한 만큼만 반복하도록 합니다.continue
대신 루프 조건에 해당하지 않는 경우 다음 반복으로 자동으로 이동하도록 합니다.
// break 대신 루프 조건 변경
for (int i = 1; i <= 5; i++) // 루프 조건 변경 (6까지 반복하지 않음)
{
Console.WriteLine(i);
}
// continue 대신 루프 조건 변경
for (int i = 1; i <= 10; i++)
{
if (i % 2 == 0)
{
continue; // 짝수는 건너뛰지만 루프 조건에 의해 다음 반복으로 자동 이동
}
Console.WriteLine(i);
}
리스트/컬렉션 활용:
- 리스트 또는 컬렉션에 필요한 데이터를 담아 원하는 대로 처리합니다.
break
대신 리스트/컬렉션에서 원하는 데이터만 추출하거나 제거합니다.continue
대신 리스트/컬렉션에서 특정 조건에 해당하는 데이터를 건너뛸 수 있습니다.
// break 대신 리스트 활용
List<int> numbers = new List<int>() { 1, 2, 3, 4, 5, 6 };
foreach (int number in numbers)
{
if (number > 5)
{
break; // 6 이상은 리스트에서 제거
numbers.Remove(number);
}
Console.WriteLine(number);
}
// continue 대신 리스트 활용
List<string> words = new List<string>() { "안녕", "하세요", "반갑습니다", "C#", "!", "한국어" };
foreach (string word in words)
{
if (word == "!")
{
continue; // "!"는 리스트에서 건너뛰고 다음 요소 처리
}
Console.Write(word + " ");
}
재귀 함수 활용:
- 재귀 함수를 사용하여 조건에 맞는 반복을 수행합니다.
break
대신 재귀 함수의 종료 조건을 통해 루프 탈출을 제어합니다.continue
대신 재귀 함수를 특정 조건에서 호출하지 않도록 합니다.
// break 대신 재귀 함수 사용
static void PrintNumbers(int i)
{
if (i > 5)
{
return; // 6 이상은 재귀 종료
}
Console.WriteLine(i);
PrintNumbers(i + 1); // 재귀 호출
}
PrintNumbers(1); // 재귀 시작
// continue
c# loops break