为什么这个StreamReader只读一行?

tsv*_*der 0 c# streamreader

下面的代码应该读取文件的每一行并对其进行操作.但是,它只读取第一行.没有for循环,它会读取整个文件.老实说,我不知道为什么它不读整篇文章.

StreamReader sr = new StreamReader(gridPath);

string line;
char[] lineCh;
char current;
int x, y;
bool north, east, south, west;

x = y = 0;

while ((line = sr.ReadLine()) != null)
{
    lineCh = line.ToCharArray();
    for (int i = 0; i < lineCh.Length; i++)
    {
        current = lineCh[i];
        north = CheckInput(current);
        current = lineCh[++i];
        east = CheckInput(current);
        current = lineCh[++i];
        south = CheckInput(current);
        current = lineCh[++i];
        west = CheckInput(current);
        i++; // Hop over space
        grid[x, y] = new GridSquare(north, east, south, west);
        x++; // Start next column
    }
    Console.WriteLine(line);
    y++;
}
Run Code Online (Sandbox Code Playgroud)

如果没有for循环,则以下工作并打印整个文件:

StreamReader sr = new StreamReader(gridPath);

string line;
char[] lineCh;
char current;
int x, y;
bool north, east, south, west;

x = y = 0;

while ((line = sr.ReadLine()) != null)
{
    lineCh = line.ToCharArray();

    Console.WriteLine(line);
    y++;
}

sr.Close();     
Run Code Online (Sandbox Code Playgroud)

CheckInput如下:

private bool CheckInput(char c)
{
    switch (c)
    {
        case 'y':
            return true;
        case 'n':
            return false;
        default:
            return true;
    }
}
Run Code Online (Sandbox Code Playgroud)

示例输入文件:

nyyn nyyy nyyy nyyy nyyy nnyy
yyyn yyyy yyyy yyyy yyyy ynny
yyyn yyyy yyyy yyyy ynyy nnnn
yyyn yyyy yyyy yyyy ynyy nnnn
yyyn yyyy yyyy yyyy yyyy nnyy
yynn yyny yyny yyny yyny ynny
Run Code Online (Sandbox Code Playgroud)

Pao*_*sco 6

你在for循环中得到异常吗?你正在递增我,也许在某些时候你试图错误地索引lineCh.

编辑:错误索引的另一个候选者是grid数组.我看不出有任何初始化代码,和值xy读取文件后确定.你是如何初始化它的?