2017-11-25 48 views
-3

私は.NETを学んでいる初心者です。console.readline()を使って整数を読み取る方法は?

私の整数をコンソールのreadlineで解析しようとしましたが、フォーマットの例外を示しています。

マイコード:

using System; 
namespace inputoutput 
{ 
    class Program 
    {   
     static void Main() 
     { 
      string firstname; 
      string lastname; 
     // int age = int.Parse(Console.ReadLine()); 
      int age = Convert.ToInt32(Console.ReadLine()); 
      firstname = Console.ReadLine(); 
      lastname=Console.ReadLine(); 
      Console.WriteLine("hello your firstname is {0} Your lastname is {1} Age: {2}", 
       firstname, lastname, age); 
     } 
    } 
} 
+2

このコードは私のために働きます。最初の行に有効な整数を入力していますか?おそらく、最初に文字列変数にreadlineを置き、解析する前に値をチェックすることができますか? – Chris

+0

可能な複製:https://stackoverflow.com/questions/24443827/reading-an-integer-from-user-input – cSteusloff

+0

はい。それは私のために働きました。有効な整数を与えました。たくさんありがとう - Grant Winney –

答えて

1

それは、その形式の例外を投げた場合:

int age = Convert.ToInt32(Console.ReadLine()); 

すると、テキスト入力はこれを試して扱うたい場合入力がintとして解析できないことを意味します。 int.TryParse()のようなものでこれをより効果的にチェックすることができます。例:

int age = 0; 
string ageInput = Console.ReadLine(); 
if (!int.TryParse(ageInput, out age)) 
{ 
    // Parsing failed, handle the error however you like 
} 
// If parsing failed, age will still be 0 here. 
// If it succeeded, age will be the expected int value. 
0

あなたのコードが絶対的に正しいですが、あなたがエラーを取得しているので、あなたの入力が整数ではないかもしれません。 try catchブロックで変換コードを使用するか、代わりにint.TryParseを使用してください。あなたが整数に数値の入力文字列を変換することができ

+1

有効な整数を与えます。ありがとうございました –

+0

TryParsはより良い、より少ないオーバーヘッドです – Sybren

-2

は(あなたのコードが正しいです):

int.TryParse(Console.ReadLine(), out var age); 
+1

それは文字通り問題のコードです。それはどのように質問に答えますか? – UnholySheep

+0

すでに元のコードが書かれています。 – lucky

+0

これはC#7.0であり、正常に動作します。 – cSteusloff

0

このような整数以外の無効なフォーマットは処理できます。

 int age; 
     string ageStr = Console.ReadLine(); 
     if (!int.TryParse(ageStr, out age)) 
     { 
      Console.WriteLine("Please enter valid input for age ! "); 
      return; 
     } 
関連する問題