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

标签 c# .net 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);

path = Console.ReadLine(); 如果用户未能插入正确的路径,则将被跳过。从昨天开始就一直在寻找解决方案,但我未能在网上找到相同的问题。完整代码链接:Code.

最佳答案

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

Nfoo

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

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

关于C#,跳过 Console.ReadLine();控制台.Read();在循环中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26425158/

相关文章:

.net - log4net 初始化

c# - log4net错误呈现

c# - 将掩码应用于字符串

c# - 如何在钢笔绘制的形状中填充颜色

c# - 如何构建批量返回数据的WCF服务

c++ - 不使用 for、while 或 goto 的循环

c++ - 我的功能实现有什么问题吗?

c# - Action/Func vs Methods,有什么意义?

c# - wcf服务中的线程中止异常

java - For-Each 循环替代方案 - 说明