인프런 커뮤니티 질문&답변

복이bok님의 프로필 이미지

작성한 질문수

[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part1: C# 기초 프로그래밍 입문

TextRPG 직업 고르기

같지 않을때 break인것이 이해가안가요

20.04.15 15:28 작성

·

207

1

같을때 break되야지 while함수를 벗어나는것 아닌가요? 같지 않을때 break이면 4또는 5를 집어넣을때 멈추는 것으로 이해가되서요

답변 4

1

Rookiss님의 프로필 이미지
Rookiss
지식공유자

2020. 04. 15. 19:20

네 맞습니다. 4, 5를 입력하면 결과가 none이기 때문에 while문에서 빠져나가지 못하고,
다시 한 번 ChooseClass()를 호출해서 올바른 선택을 강요(?)받게 됩니다.

1

Rookiss님의 프로필 이미지
Rookiss
지식공유자

2020. 04. 15. 17:13

안녕하세요,
while을 사용한 이유는 '사용자가 정상적인 값을 고를 때까지 계속 입력을 받게 하기' 위함입니다.
예제에서 사용자가 "1", "2", "3" 중 하나를 골랐으면 각각 Knight, Archer, Mage로 되는 반면,
나머지 경우에는 None으로 저장이 되고 있죠.
따라서 [choice != ClassType.None]의 의미는 [사용자가 "1" "2" "3" 중 하나를 고른 경우]에 해당하니,
다를 때 break를 하면 정상 입력을 한 경우에만 다음 단계로 넘어가게 됩니다.
말씀대로 4, 5를 입력하면 빠져나가지 못하고 계속 while문에서 갇혀(?) 있게 되겠죠.

0

고양이조아요님의 프로필 이미지

2022. 10. 03. 14:18

안녕하세요. 추가 질문 있습니다.

1,2,3 넣었을때만 break 이고, 0,4,5~ 일때 None 으로 된다면 사실 None=0 을 사용하지 않아도 4,5~일때도 None이라는 이해가 되는데요 제가 이해한게 맞을까요?

그러면

enum 을 작성할때 첫줄에 None = 0을 안써도 무방한가요?

음, break 를 위한 조건문에 None 을 사용해서 넣기는 해야 하는것 같은데.

if (choice != ClassType.None)

break;

 

enum ClassType

{

None = 0, 여기는 안써도 무방한것 할까요?.

Knight = 1,

Archer = 2,

Mage = 3

}

 

Rookiss님의 프로필 이미지
Rookiss
지식공유자

2022. 10. 03. 16:17

[제대로 된 값이 아닌 그 외 or 초기값] = None으로 사용하는 것이고
프로그래밍에 '꼭' 뭘 어떻게 해야한다는 정답은 없습니다.
다른 방법으로 입력하지 않은 상태를 판별한다면 당연히 그것도 안 될 것은 없겠죠.

고양이조아요님의 프로필 이미지

2022. 10. 03. 16:57

확인 했습니다.

감사합니다.

0

복이bok님의 프로필 이미지
복이bok
질문자

2020. 04. 15. 19:01

조금 이해가 갈려하는데요 none이 아닐경우는 나이트 아처 메이지니깐 break가 걸리고 4, 5를 입력하면 none이라서 그런건가요?