2
string l = Console.ReadLine();

try
{
    int.Parse(l);
}
catch (FormatException)
{
    Console.WriteLine("Invalid input. Please enter 1, 2, or 3.");
}

ご覧のとおり、入力を求めましたが、ユーザーが文字「f」などの非整数の回答を入力すると、catch ステートメントはそれをキャッチしますが、変数「l」がまだ残っているため、その後再び例外をスローします。 「f」に等しい。ヘルプ?

4

4 に答える 4

6

int.TryParse例外をキャッチする代わりに使用できます。解析が成功したかどうかを返すため、入力が有効になるまでループで確認できます。

int i;
bool valid = false;
do {
    Console.WriteLine("Enter an int: ");
    string input = Console.ReadLine();
    valid = int.TryParse(input, out i);
} while(! valid);

//use i
于 2013-05-15T20:42:38.477 に答える