将用户返回到数据输入点C#控制台应用程序

时间:2013-09-08 00:58:53

标签: c# validation

在下面的示例中,假设用户输入负数,如何将光标移回用户输入无效数字的相同位置,以便程序可以继续?

Console.Write("Enter a number for the factorial: ");

int k = Convert.ToInt32(Console.ReadLine());

if (k < 0)
{
    Console.WriteLine("Please enter a number that is greater than or equal to zero");
}

2 个答案:

答案 0 :(得分:0)

我认为这符合您的要求

string errormessage="Please enter a positive number; previous input was invalid";
        Console.WriteLine("Enter the number: ");
        int k = Convert.ToInt32(Console.ReadLine());
        while (k < 0)
        {
            Console.Write(errormessage);
            //get back to the input line
            Console.SetCursorPosition(0, Console.CursorTop-1);
            //Clearing the previous input
            for (int i = 0; i < k.ToString().Length; i++)
                Console.Write(" ");
            Console.Write("\r");
            k = Convert.ToInt32(Console.ReadLine());
        }
        //Clearing the error message
        for (int i = 0; i < errormessage.Length; i++)
            Console.Write(" ");
        Console.WriteLine("\r");
抱歉,不是最漂亮的代码,而是完成工作!

答案 1 :(得分:0)

利用此similar post中的方法,我相信您可以解决您的问题。基本上只需复制ClearConsoleLine方法并使用Console.SetCursorPosition移动到所需的行/列。