在C#中循环进程

时间:2012-09-23 08:05:37

标签: c# exception loops

我熟悉循环,但循环过程让我感到困惑:

如果用户输入非整数,我希望再次提示“您的年龄”这个问题,直到用户输入整数

 Console.WriteLine("Your age:");
 string line = Console.ReadLine();
 if (!int.TryParse(line, out age))
 {
     Console.WriteLine("{0} is not an integer", line);

 }

5 个答案:

答案 0 :(得分:7)

尝试

int age;

Console.WriteLine("Your age:");
string line = Console.ReadLine();
while (!int.TryParse(line, out age))
{
    Console.WriteLine("{0} is not an integer", line);
    Console.WriteLine("Your age:");
    line = Console.ReadLine();
}

我不确定循环进程的含义。您正在循环获取用户输入并尝试解析该输入。

你可以在 来实现这一目标。转到

答案 1 :(得分:6)

试试这个,它会使“你的年龄:”重复,直到输入正确为止:

int age;
while(true)
{
    Console.WriteLine("Your age:");
    string line = Console.ReadLine();

    if (!int.TryParse(line, out age))
       Console.WriteLine("{0} is not an integer", line);

    else break;
}

答案 2 :(得分:2)

我使用过这种方法。我不知道这是否会降低性能,但我发现使用正则表达式很酷。如果这适用于你,请告诉我

将其添加到TOP

using System.Text.RegularExpressions;

然后使用以下内容:

            bool bEnteredNumberNotValid = true;
            while (bEnteredNumberNotValid)
            {
                Console.WriteLine("Your age:");
                string sAge = Console.ReadLine();

                string regString = "(^[0-9]+$)"; //REGEX FOR ONLY NUMBERS

                Regex regVal = new Regex(regString, RegexOptions.IgnoreCase | RegexOptions.Singleline); //REGEX ENGINE
                Match matVal = regVal.Match(sAge); //REGEX MATCH WITH THE INPUT
                if (!matVal.Success) // IF THERE IS NO MATCH, SHOW THE BELOW
                {
                    Console.WriteLine("{0} is not an integer", sAge);
                }
                else // ELSE SET bEnteredNumberNotValid FALSE AND GET OUT.
                {
                    bEnteredNumberNotValid = false;
                    Console.WriteLine("Press any key to continue...");
                    Console.ReadLine();
                }
            }

OUTPUT!

Click here to see the output of above program

希望这有帮助。

答案 3 :(得分:1)

如果我理解你的问题,你为什么不这样做呢?

Console.WriteLine("Your age:");
string line = Console.ReadLine();
while (!int.TryParse(line, out age))
{
    Console.WriteLine("{0} is not an integer", line);
    Console.WriteLine("Your age:");
    line = Console.ReadLine();
}

答案 4 :(得分:0)

我只知道Recursive Function来实现这一点,但不推荐使用它,因为它容易出错并且使程序过于复杂。

课堂

 string line;
 int age = 0;

在主要

 Console.WriteLine("Your age:");   
 line  = Console.ReadLine();  
 checkFunction();

声明方法

public int checkFunction()
{
  if (!int.TryParse(line, out age))
  {
    Console.WriteLine("{0} is not an integer", line);
    line = Console.ReadLine();
    return checkFunction();
  }
  else
  {
    return age;
  }
}