在 C# 中,我试图让用户输入一个数字。然后我想检查一下
- 他们输入了一个可以转换为 double 和的字符串
- 他们输入了一个大于零的值
我最初创建的方法是
string inValue;
double outcome;
Console.WriteLine("Enter amount: ");
inValue = Console.ReadLine();
while (double.TryParse(inValue, out outcome) == false)
{
Console.WriteLine("Initial value must be of the type double");
Console.WriteLine("\nPlease enter the number again: ");
inValue = Console.ReadLine();
}
outcome = double.Parse(inValue);
while (outcome < 0)
{
Console.WriteLine("Initial value must be of at least a value of zero");
Console.WriteLine("\nPlease enter the number again: ");
inValue = Console.ReadLine();
outcome = double.Parse(inValue);
}
return outcome;
问题在于,如果用户输入说“-10”然后输入“f”,则会发生异常。这是因为程序将通过第一次检查(检查 double)是否为 -10 的值,但是当输入“f”时,它会在仅给出第二次测试时抛出异常。
我认为解决方案是创建一个 while 语句,当值无法转换为 double 值或值转换为 double 值且小于零时写入错误语句。我不知道该怎么做是将值转换为 double 值,然后在 while 语句中将其评估为大于零。
最佳答案
您走在正确的轨道上 - 您需要有一个 while 循环来获取输入,然后尝试两次验证。一种方法是创建一个 bool 值来跟踪该值是否有效,然后将其用作循环的条件:
double outcome = 0;
bool valid = false;
while (!valid)
{
Console.WriteLine("Enter amount: ");
string inValue = Console.ReadLine();
if (double.TryParse(inValue, out outcome) == false)
{
Console.WriteLine("Initial value must be of the type double");
Console.WriteLine("\nPlease enter the number again: ");
}
else if (outcome < 0)
{
Console.WriteLine("Initial value must be of at least a value of zero");
Console.WriteLine("\nPlease enter the number again: ");
}
else
{
valid = true;
}
}
return outcome;
也可以将两个条件都放在 while 语句中,但这种方法可以让您根据失败的条件提供不同的消息。
关于c# - 测试以确保用户输入是 double 且大于零?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37501137/