C#,跳过Console.ReadLine(); Console.Read(); 在循环中

2 .net c# loops console.readline

如果我运行我的代码并插入正确的值第一次程序工作正常并完成其工作,但如果我输入错误的路径并允许循环旋转第二次它跳过path=Console.ReadLine();但它不会跳过j = (char)Console.Read();相同的事情持续通过剩余的代码.

do
{
    Console.WriteLine("Insert path:");
    path = Console.ReadLine();

    temp1 = CheckPath(path); //checks if inserted value is legit
    if (temp1 == false) 
    { 
        Console.WriteLine("\nDo you want to skip this step(by default directory will be set to Desktop)? Y/N ");
        j = (char)Console.Read(); 
        if (j.Equals('Y') || j.Equals('y')) 
        {
            path = Environment.GetFolderPath(Environment.SpecialFolder.Desktop); 
            temp1 = true; 
        }
    }
    //User inputs y/Y loop will end and exit with either path chosen by user or with desktop path
} while (!temp1);
Run Code Online (Sandbox Code Playgroud)

path = Console.ReadLine();如果用户未能插入正确的路径,则跳过.自昨天以来一直在寻找解决方案,我没有在网上找到相同的问题.链接到完整代码:代码.

Jon*_*eet 5

调用没有被跳过 - 问题是Console.Read()只会在用户点击返回后返回 - 虽然它只会消耗它读取的第一个字符.因此,假设(当提示跳过时)用户输入:

Nfoo
Run Code Online (Sandbox Code Playgroud)

然后命中返回... path下一次迭代的值将是foo.

最简单的修复方法可能是将您的Console.Read()调用转换为Console.ReadLine()仅处理用户键入多个字符的情况.