Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/332.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#,跳过Console.ReadLine();Console.Read();在循环中_C#_.net_Loops_Console.readline - Fatal编程技术网

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

C#,跳过Console.ReadLine();Console.Read();在循环中,c#,.net,loops,console.readline,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 insert

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

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

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


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

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

您已经通过了吗?这可能只是分配布尔值和路径值的顺序。每次计算它们时,将鼠标悬停在它们上方,检查这是否是您希望看到的值。@DeeMac我一直在疯狂地调试这段代码。它执行原始post.Consol.Read()上所述的操作,在输入中添加一个回车符,回车符使Console.ReadLine()跳过check@SeraphimFoA让我马上试试。j=(char)Console.Read();没有被跳过。而path=Console.ReadLine();这是由于Console.Read()引起的;一旦我将其转换为Console.ReadLine();成功了。谢谢请解释一下为什么会这样?@卡尔:我在回答中解释过。。。控制台。直到用户点击返回,阅读才会完成。很抱歉我的误解,但我正在尽可能多地学习。所以请详细说明一下,因为我实际上按了回车键(return=enter?。@Carl:您按了回车键,但
Console.Read()
不使用它,它只使用一个输入字符。因此,如果您键入
“foo”
,它将使用
f
,然后对
控制台的下一次调用。ReadLine()
将使用“oo”。