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#で何かを入力するようにユーザーに要求するにはどうすればよいですか?
これを変更する必要があります:
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
}
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");
}
より一般的になるように、追加のオブジェクトを作成することをお勧めします(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
Console.WriteLine("Type any number: ");
string str = Console.ReadLine();
Type a = Type.Parse(str);
typeは、ユーザー入力をキャストするデータ型です。フォーラムに移る前に、C#の基礎に関する本をいくつか読むことをお勧めします。