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

时间:2014-10-17 12:35:17

标签: c# .net loops console.readline

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

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); 。自昨天以来一直在寻找解决方案,我没有在网上找到相同的问题。链接到完整代码:Code.

2 个答案:

答案 0 :(得分:5)

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

Nfoo

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

最简单的解决方法可能是将Console.Read()调用转换为Console.ReadLine(),并处理用户输入多个字符的情况。

答案 1 :(得分:3)

使用Console.ReadKey更有用 - 它只会读取一个键,并且不需要您按Enter键。