C# 반복문에서 break와 continue 사용법

2024-07-27

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:
    • 특정 조건에 해당하는 반복만 건너뛰고 싶을 때 사용합니다.
    • 반복 횟수를 줄이고 싶지만 루프 자체는 종료하고 싶지 않을 때 사용합니다.

주의:

  • breakcontinue는 반복문 내에서만 사용할 수 있습니다.
  • 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

c# loops break

C#, .NET, DateTime을 이용한 나이 계산

해결 방법:DateTime 타입 변수 선언: 생일을 저장할 DateTime 타입 변수 birthday를 선언합니다. 예시: DateTime birthday = new DateTime(1990, 1, 1);DateTime 타입 변수 선언:


C#에서 상대 시간 계산

1. DateTime 구조체 사용DateTime 구조체는 날짜와 시간을 나타내는 데 사용됩니다. DateTime 객체에서 다른 DateTime 객체를 빼면 두 날짜/시간 사이의 차이를 나타내는 TimeSpan 객체를 얻을 수 있습니다


C#에서 사전을 값으로 정렬하는 방법

1. Linq 사용하기LINQ(Language Integrated Query)는 C#에 내장된 기능으로, 데이터 쿼리 및 변환을 쉽게 수행할 수 있도록 합니다. 사전을 값으로 정렬하려면 다음과 같은 코드를 사용할 수 있습니다


C#, .NET 및 성능과 관련된 Type에서 새 개체 인스턴스를 만드는 방법

1. new 키워드 사용:위 코드는 MyClass 형식의 새 인스턴스를 myObject 변수에 할당합니다. new 키워드는 메모리에 새 개체를 할당하고 해당 클래스의 생성자를 호출합니다.2. Activator 클래스 사용: