2017-12-28 64 views
-5

私はこのような何かやりたい - ユーザーが何の答えを与えていないし、単に押すと入力した場合、変数入力値nullを保存する必要があり、出力がNo answer givenでなければなりません。ここC#では、ヌル入力可能なブール型変数にキーボードからの入力をどのように取るのですか?

using System; 

class MainClass 
{ 
    public static void Main() 
    { 
     bool? input; 
     Console.WriteLine ("Are you Major?"); 
     input = bool.Parse (Console.ReadLine()); 
     IsMajor (input); 

    } 


    public static void IsMajor (bool? Answer) 
    { 
     if (Answer == true) { 
      Console.WriteLine ("You are a major"); 
     } else if (Answer == false) { 
      Console.WriteLine ("You are not a major"); 
     } else { 
      Console.WriteLine ("No answer given"); 
     } 
    } 

} 

を。

私のコードでは、truefalseの入力はうまくいきます。

しかし、誰入力が与えられていないと入力している場合、コンパイラを押してはnull値がに保存されている取得する方法

System.FormatExeption has been thrown 
String was not recognized as a valid Boolean 

だから、例外をスロー変数inputので、出力はここNo answer given

です

質問String was not recognized as a valid boolean C#

は、実際にはディプリカではありませんそれはキーボードから直接入力を受けたくないからです。そのような入力が取れない場合、回避可能な型があるので、null可能な型の有用性は何ですか?

+0

コンソール入力を文字列に読み込み、bool.TryParseを使用します。 – Equalsk

+0

しかし、それは道のりです。ヌル入力可能なデータ型の場合と同様に、ヌル入力を行うことができますか? – Suraj

+3

[Stringは有効なブール値C#として認識されませんでした](https://stackoverflow.com/questions/40010816/string-was-not-recognized-as-a-valid-boolean-c-sharp) – mjwills

答えて

2
bool? finalResult = null; 
bool input = false; 

Console.WriteLine("Are you Major?"); 

if (bool.TryParse(Console.ReadLine(), out input)) 
    finalResult = input; 
} 

を。

-2

あなたの解析をtry-catchとcatchで囲むことができます(つまりtrueまたはfalse以外がユーザによって指定されている場合)。inputをnullに設定します。

+0

これは方法です。直接NULLを入力できるかどうかは、null可能なデータ型の場合と同じですか? – Suraj

+0

これは不可能です。あなたが何かを入力しなければ、Console.ReadLine()は空の文字列を返しますので、あなた自身で何かをしなければなりません(つまり、String.IsNullOrEmpty()を使用します) –

4
bool input; 
Console.WriteLine("Are you Major?"); 
if (!bool.TryParse(Console.ReadLine(), out input)) 
{ 
    Console.WriteLine("No answer given"); 
} 
else 
{ 
    //.... 
} 

またはC#7使用:入力がtrue又はfalseのいずれかとして解析できない場合nullなりfinalResult上記の技術を使用し

if (!bool.TryParse(Console.ReadLine(), out bool input)) 
{ 
    Console.WriteLine("No answer given"); 
} 
else 
{ 
    // Use "input" variable 
} 
// You can use "input" variable here too 
+0

良い答えですが、こちらです。 null可能なデータ型の効用とは何ですか? null可能なデータ型が使用されない場合の回避策もあります。 – Suraj

+1

@Surajたとえば、Entity Frameworkの場合。データベースの 'bit'カラムが' null'(IsAttachedビットがヌル)の場合、 'bool? 'を使う必要があります。 – JohnyL

関連する問題