如何创建一个循环,在用户每次输入无效数据类型时提示用户输入数据?


        Console.WriteLine("Enter value for Monday : ");
        milesMon = Console.ReadLine();

        try
        {
            dblMon = double.Parse(milesMon);

        }
        catch
        {
            Console.WriteLine("You entered an invalid number - a default of 0 has been set");
            dblMon = 0;
            while (true) break;
                Console.WriteLine("Enter value for Monday : ");
            milesMon = Console.ReadLine();

在它的当前状态下,代码只提示用户在他们第一次输入不正确的数据后,我想知道如何使它每次都发生。

-谢谢

应该使用do或while循环来重复提示,直到输入有效的双精度值。您还应该考虑添加某种形式的退出关键字。比如他们输入"exit, quit, q"等等。让它终止应用程序,而不是循环回去。然而,作为一个控制台应用程序,ctrl + c会关闭它,不管它在做什么(这是杀死命令),但不是每个人都知道。

bool repeat = true;
var dblMilesMon = (double)0;
do 
{
    Console.WriteLine("Enter value for Monday : ");
    var strMilesMon = Console.ReadLine();
    if (!double.TryParse(strMilesMon, out dblMilesMon)) 
        Console.WriteLine("You entered an invalid number - please enter a numeric value.")          
    else
        repeat = false; 
}while (repeat);
//do something with dblMilesMon

您可以使用TryParse()将输入字符串转换为double类型,如果转换失败将返回false;基于该输入,您可以提示用户输入是否有效。然后循环,直到用户输入Exit

 string inputVal = "";
 double inputDoubleVal;
 while (inputVal == "Exit")
   {
      Console.WriteLine("Enter value for Monday : ");
      inputVal = Console.ReadLine();
      if (double.TryParse(inputVal, out  inputDoubleVal))
       {
          //Process with your double value
       }
      else
       {
         Console.WriteLine("You entered an invalid number - a default of 0 has been set");
       }
   }

基本上你想写一个循环。当输入无效时,提示用户。因此,您应该有一个称为validbool变量来指示输入是否有效。然后是像这样的while循环:

while (!valid) {
    //...
}

在while循环中,提示用户。所以代码看起来像这样:

bool valid = false;
int input = 0;
while (!valid) {
    Console.WriteLine ("Prompt");
    try 
    {
        input = Convert.ToInt32 (Console.ReadLine ());
        valid = true;
    } 
    catch {}
}

希望这对你有帮助!

您可以使用递归来创建无终止循环,而无需使用forwhile。另外,与其使用try-catch语句,不如使用TryParse
Doc ref: https://msdn.microsoft.com/en-us/library/bb384043.aspx

public int readInput(){
  int val = 0;
  Console.WriteLine("Enter a valid int");
  string enteredVal = Console.ReadLine();
  bool result = int.TryParse(enteredVal, out val);
  if(result)
    return val;
  Console.writeLine("Try again, only int values allowed");
  return readInput();
}

int val = readInput();

相关内容

  • 没有找到相关文章

最新更新