2

如果我第一次运行我的代码并插入正确的值,程序可以正常工作并完成它的工作,但是如果我输入错误的路径并允许循环第二次旋转它会跳过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();如果用户未能插入正确的路径,则会被跳过。从昨天开始一直在寻找解决方案,但我未能在网上找到相同的问题。链接到完整代码:代码。

4

2 回答 2

5

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

Nfoo

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

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

于 2014-10-17T12:38:03.920 回答
3

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

于 2014-10-17T12:42:36.323 回答