0

在下面的示例中,假设用户输入了一个负数,如何将光标带回用户输入无效数字的位置,以便程序继续运行?

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");
}
4

2 回答 2

0

利用这个类似帖子中的方法,我相信你可以解决你的问题。基本上只需复制 ClearConsoleLine 方法并使用 Console.SetCursorPosition 移动到所需的行/列。

于 2013-09-08T05:08:28.337 回答
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");

抱歉,不是最漂亮的代码,但可以完成工作!

于 2013-09-08T02:57:12.697 回答