尝试捕获块中的循环
本文关键字:循环 | 更新日期: 2023-09-27 18:19:39
我需要一个方法来确保我输入了正确类型的值AND,这将使我达到应该再次输入它们的地步。我不需要递归来进入方法的开头,我需要一些东西来进入我输入值的地方。我知道我应该使用循环,但我不知道如何做到这一点。这是方法的一部分:
console.writeline("Enter your value");
double kv = 0;
try
{
kv = Convert.ToDouble(Console.ReadLine());
}
catch (FormatException)
{
Console.WriteLine("Enter a number");
}
您可以遵循以下特定模式:
var data = GetValueFromUser();
while(!IsValid(data))
{
InformUserTheirDataIsBad();
data = GetValueFromUser();
}
//data is now valid
使用Double.TryParse
而不是try/catch:
Console.Writeline("Enter your value");
double kv;
while (!Double.TryParse(Console.ReadLine(), out kv))
Console.WriteLine("Enter a number");
使用TryParse
double kv = 0;
Console.WriteLine("Enter your value");
while (double.TryParse(Console.ReadLine(), out kv) == false)
{
Console.WriteLine("Enter your value");
}
您也可以使用do while
循环:
double kv = 0;
bool invalid = false;
do
{
console.writeline("Enter your value");
try
{
kv = Convert.ToDouble(Console.ReadLine());
invalid = false;
}
catch (FormatException)
{ invalid = true;}
} while (invalid);