2012-02-19 3 views
1

내 검색이 비어 있거나 내가 찾은 결과를 이해하지 못했습니다. 부울 값을 입력하라는 메시지를 표시하려고하지만 예 또는 아니요로 대답하겠습니다. 더 많은 코드를 볼 필요가 있으면 알려주지 만 프롬프트를 위해이 코드를 가지고 있습니다.부울 값을 묻는 C#

public static bool getBoolInputValue(string inputType) 
    { 
     bool valid = false; 
     bool value = true; 
     string inputString = string.Empty; 
     do 
     { 
      inputString = GetInput(inputType); 
      if (!(String.IsNullOrEmpty(inputString))) 
      { 
       valid = bool.TryParse(inputString, out value); 
      } 
      if (!valid) 
       Console.WriteLine("Invalid " + inputType + " try again!"); 
     } while (!valid); 

     return value; 
    } 

이것은 내 부울의 매개 변수입니다. 아마도 이것이 좀 더 구체적 일 필요가 있을까요?

public bool Nitrus 
    { 
     set { nitrus = value; } 
     get { return nitrus; } 
    } 

도움 주셔서 감사합니다. 나는 프로그래밍에 익숙하지 않지만 이것을 이해할 수는 없다. 그것은 성공적으로 프롬프트를 표시하지만 상자에 어떤 답을 입력했는지는 중요하지 않습니다. 올바른 형식이 아님을 알려줍니다.

+1

는'IsNullOrEmpty' 테스트 건너 뛰기,'bool.TryParse'는 false를 돌려줍니다 똑똑 –

+1

왜 누군가가이 질문에 투표 할 수 있는지 이해할 수 없습니다 (나는 상향 투표했습니다). 우리 모두는 어딘가에서 시작해야만했고, 그것은 우리 자신의 기술을 개발하는 것을 포함합니다. MSDN이든 다른 곳이든간에 문제에 대한 해답을 찾을 수 있습니다. –

답변

2

만약 내가 제대로 이해하고 당신이 입력하는 사용자가 원하는"예 "하고 말 것 당신이 진정한 가치를 가지고있다. 즉 올바른 경우, 모든 string.IsNullOrEmptybool.TryParse 물건을 생략하고이 같은 더 많은 일을 할.

//make it ToLower so that it will still match if the user inputs "yEs" 
inputString = GetInput(inputType); 
if (inputString.ToLower() == "yes") 
{ 
    value = true; 
} 
else 
{ 
    value = false; 
} 

//note that the if/else code is the same as directly applying 
// the value from the comparison itself: 
// value = inputString.ToLower() == "yes"; 

// this allows the user to type in "yes" or "y": 
// value = inputString.ToLower() == "yes" || inputString.ToLower() == "y"; 
+0

.NET 문자열 사용에 대한 Microsoft의 지침은 ToLower 대신 ToUpper를 사용하도록 요구합니다. 원하는 동작 인 경우 대/소문자 구분 비교를 지정하는 것이 좋습니다. – phoog

+0

감사합니다. 그러나 나의 프로그램은 계속 나에게 질문 lol을 묻는다. 분명히 어떤 이유로 든 대답을 좋아하지 않습니다. 다음 문제에! – willisj318

0

프로그램은 유효한 부울 값으로 'true'또는 'false'만 허용합니다. '예'또는 '아니오'를 원할 경우 문자열 비교를 수행해야합니다.

valid = string.Compare(inputString, "yes", true) == 0 || string.Compare(inputString, "no", true) == 0; 

... 
value = string.Compare(inputString, "yes", true) == 0; 
+0

'? true : false'는 항상 중복됩니다. –

+0

업데이트 된 답변, 늦었습니다 : P – devdigital

+0

걱정하지 않아도, 너무 피곤합니다. 밤새 16 시간 축과 맹방 게임을했습니다. –

0

Boolean.TryParse은 "참"및 "거짓"만 인식합니다. "예"와 "No` 또는"에 "와"끄기를 들어 "당신은 당신의 자신의 함수를 작성해야합니다.

0
public static bool getBoolInputValue() 
{ 
    bool value; 
    bool valid; 
    do 
    { 
     Console.WriteLine("Enter yes or no: "); 
     var inputString = Console.ReadLine(); 
     if (String.IsNullOrEmpty(inputString)) 
     { 
      continue; 
     } 
     if (string.Equals(inputString, "yes") 
     { 
      value = true; 
      valid = true; 
     } 
     else if (string.Equals(inputString, "no") 
     { 
      value = false; 
      valid = true; 
     } 

    } while (!valid); 

    return value; 
} 
+0

'valid'가 초기화되지 않았기 때문에 꽤 컴파일되지 않습니다. 즉, 입력 문자열이 "지미 균열 옥수수"시작하는 경우. –

+0

예,이 시도하고 유효한 오류 던졌습니다. – willisj318