스토리지

while문, switch문 중첩 시, break가 while을 종료하는 법 본문

Unity/문제해결

while문, switch문 중첩 시, break가 while을 종료하는 법

ljw4104 2021. 3. 10. 12:45
class Program
    {
        static void Main(string[] args)
        {
            while (true)
            {
                Console.Write("과일 이름을 입력하세요 : ");
                string name = Console.ReadLine();

                Console.WriteLine("{0}을(를) 입력 하셨습니다.", name);

                switch (name)
                {
                    case "바나나":
                        Console.WriteLine("바나나는 파초과 파초속의 여러해살이 식물과 열매를 두루 일컫는 말이다. 바나나는 열대 아시아, 인도, 말레이시아 등지가 바나나의 원산지이지만, 현재의 주된 바나나 생산 지역은 인도, 브라질, 필리핀, 에콰도르 등이다.");
                        break;
                    case "수박":
                        Console.WriteLine("수박은 남아프리카 원산의 한해살이 덩굴식물, 또는 그 열매를 말한다. 서과 또는 수과라고도 한다. 열매의 속살은 식용하는데, 붉거나 노란색을 띠며, 달고, 씨가 있는 수박이 대부분이다.");
                        break;
                    case "종료":
                        Console.WriteLine("프로그램을 종료합니다.");
                        break;
                    default:
                        Console.WriteLine("{0}에 대한 정보가 부족합니다.", name);
                        break;
                }
                Console.WriteLine();
            }
        }
    }

이 상황에서 case '종료' 일 때 상상되어지는 경우는 switch문 탈출 -> while문 탈출 -> 프로그램 종료이다.

하지만 break는 가장 가까이에 있는 switch문만 벗어나고 계속해서 while문을 반복하게 된다.

 

몇가지 방법을 생각해보았다.

1. bool 변수 추가

- 종료를 판정하는 bool 변수를 추가하여 case '종료' 시에 bool값을 true로 변경 후 switch문 밖에 bool이 참일 시, break를 걸어주어서 while문을 탈출할 수 있다.

 

2. System.Diagnostics.Process.GetCurrentProcess().Kill();

- 프로세스 자체를 죽이는 기법. 이 분기에 접어들면 무조건 프로그램이 종료된다고 판단될 때는 써도된다.

Comments