2012-02-19 7 views
1

検索結果が空白になっているか、見つかった結果がわかりません。私はブール値を入力するようにユーザーに促そうとしていますが、答えをyesまたはnoにします。より多くのコードを表示する必要がある場合はお知らせくださいが、私はこれをプロンプトに表示します。ブール値の入力を促す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

誰かがなぜこの質問に投票するのか分かりません(私はupvotedしました)。私たちは皆どこかに出発しなければなりませんでした。 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

ありがとう、これは動作します。しかし、私のプログラムは、質問のために私に継続的に私を促します。明らかに何らかの理由で答えが好きではない。次の問題に! – willisj318

0

あなたのプログラムは有効なブール値として '真'または '偽'しか受け入れません。 'yes'または 'no'が必要な場合は、文字列比較を行う必要があります。

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時間Axis and Alliesゲームで一晩中起きていました:) –

0

Boolean.TryParseは、 "True"と "False"のみを認識します。 「はい」と「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

関連する問題