在try catch块中循环

use*_*370 3 c# loops try-catch

我需要一种方法来确保我输入正确类型的值,这将使我达到我应该再次输入它们的程度.我不需要递归来到方法的开头,我需要一些东西到达我输入值的地方.我知道我应该使用循环,但我不知道该怎么做.这是方法的一部分:

console.writeline("Enter your value");
double kv = 0;
try
{
    kv = Convert.ToDouble(Console.ReadLine());
}
catch (FormatException)
{
    Console.WriteLine("Enter a number");
}
Run Code Online (Sandbox Code Playgroud)

Zon*_*ong 6

使用Double.TryParse而不是try/catch:

Console.Writeline("Enter your value");
double kv;
while (!Double.TryParse(Console.ReadLine(), out kv))
    Console.WriteLine("Enter a number");
Run Code Online (Sandbox Code Playgroud)


Ser*_*rvy 6

您可以遵循以下特定模式:

var data = GetValueFromUser();
while(!IsValid(data))
{
    InformUserTheirDataIsBad();
    data = GetValueFromUser();
}
//data is now valid
Run Code Online (Sandbox Code Playgroud)