web-dev-qa-db-ja.com

C#でユーザーに入力を求める方法

Python=からC#に切り替えていますが、ReadLine()関数で問題が発生しています。ユーザーに入力を求める場合Python =私はこのようにしました:

x = int(input("Type any number:  ")) 

C#では、これは次のようになります。

int x = Int32.Parse (Console.ReadLine()); 

しかし、これを入力するとエラーが発生します。

int x = Int32.Parse (Console.ReadLine("Type any number:  "));

C#で何かを入力するようにユーザーに要求するにはどうすればよいですか?

5
user7316312

これを変更する必要があります:

int x = Int32.Parse (Console.ReadLine("Type any number:  "));

これに:

Console.WriteLine("Type any number:  "); // or Console.Write("Type any number:  "); to enter number in the same line
int x = Int32.Parse(Console.ReadLine());

ただし、文字(またはintに解析できない別の記号)を入力すると、Exceptionが取得されます。入力した値が正しいかどうかを確認するには:

(より良いオプション):

Console.WriteLine("Type any number:  ");
int x;
if (int.TryParse(Console.ReadLine(), out x))
{
    //correct input
}
else
{
    //wrong input
}
6
Roman Doskoch
Console.WriteLine("Type any number");
string input = Console.ReadLine();
int x;
if (int.TryParse(input, out x))
{
    //do your stuff here
}
else
{
    Console.WriteLine("You didn't enter number");
}
1
Nino

より一般的になるように、追加のオブジェクトを作成することをお勧めします(C#では静的オブジェクトを拡張できないため)。

public static class ConsoleEx
{
    public static T ReadLine<T>(string message)
    {
        Console.WriteLine(message);
        string input = Console.ReadLine();
        return (T)Convert.ChangeType(input, typeof(T));
    }
}

もちろん、このコードには出力タイプに関する制約が含まれていないためエラーは発生しませんが、問題なくいくつかのタイプにキャストされます。

例えば。このコードを使用する:

static void Main()
{
    int result = ConsoleEx.ReadLine<int>("Type any number: ");
    Console.WriteLine(result);
}

>>> Type any number: 
<<< 1337
>>> 1337 

オンラインで確認

0
Mateusz
Console.WriteLine("Type any number: ");
string str = Console.ReadLine();
Type a = Type.Parse(str);

typeは、ユーザー入力をキャストするデータ型です。フォーラムに移る前に、C#の基礎に関する本をいくつか読むことをお勧めします。

0
Vivek