如果我第一次运行我的代码并插入正确的值,程序工作正常并完成它的工作,但如果我输入错误的路径并允许循环第二次旋转,它会跳过 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/