如果有人将字符串输入双精度值并在发送错误消息后再次发送错误,如何发送错误



这是我的代码。它可以工作,并在用户输入数字以外的内容时向用户发送错误。我需要弄清楚的是,如果他们尝试再次输入字符串,如何发送相同的错误。

Console.WriteLine("Type in a number and then press enter:");
try
{
    num2 = Convert.ToDouble(Console.ReadLine());
}
catch
{
    Console.WriteLine("Please Enter a valid numerical value!");
    Console.WriteLine("Please enter a valid number and then press enter:");
    num2 = double.Parse(Console.ReadLine());
}
double result;
do
{
    Console.Write("Type in a number and then press enter: ");
}
while (!double.TryParse(Console.ReadLine(), out result));
Console.WriteLine($"Thanks! {result}");

您应该使用 double.TryParse ,它返回一个指示解析是否成功的bool,并将 out 参数设置为转换后的值。然后你可以做这样的事情:

Console.WriteLine("Type in a number and then press enter:");
double userInput;
while (!double.TryParse(Console.ReadLine(), out userInput)
{
    Console.WriteLine("Please Enter a valid numerical value!");
    Console.WriteLine("Please enter a valid number and then press enter:");
}
// After the above loop, the variable 'userInput' will contain the user's number

这比使用 try/catch 进行输入验证更有意。有关更多阅读,请参阅:为什么说异常对输入验证如此不利?

创建一个布尔verifiedNumber然后创建一个while循环

while(!verifiedNumber) {
   Console.WriteLine("Type in a number and then press enter:");
   try { 
      num2 = Convert.ToDouble(Console.ReadLine()); 
      verifiedNumber = true;
   } 
   catch { 
      Console.WriteLine("Please Enter a valid numerical value!"); 
   }
}

作为另一个 althernative,您可以使用for循环:

double result;
for(; ; )
{
    Console.WriteLine("Type in a number and then press enter:");
    if(!double.TryParse(Console.ReadLine(), out result)){
        Console.WriteLine("Please Enter a valid numerical value!");
        Console.WriteLine("Please enter a valid number and then press enter:");
    }
    else
    {
        break;
    }
}
Console.WriteLine($"Result = {result}");

相关内容

最新更新