C#需要帮助将文本文件读取为2D或锯齿状数组



我正在使用SMACOF算法,遇到了一个小问题。我正在尝试读取包含以下元素的文本文件:

5.1 3.5 1.4 0.2 
4.9 3.0 1.4 0.2 
4.7 3.2 1.3 0.2 
4.6 3.1 1.5 0.2

这些元素的几百行在哪里。到目前为止,我只读了第一行,不知道为什么它没有读完所有的行。这是我的代码:

    static void Main(string[] args)
    {
        string[] lines = File.ReadAllLines("duom.txt");
        string[][] grid = new string[lines.Length][];
        for (int i = 0; i < lines.Length; i++)
        {
            grid[i] = lines[i].Split(',');
        }
        for (int i = 0; i < lines.Length; i++)
        {
            for (int j = 0; j < lines[i].Length; j++)
            {
                Console.WriteLine(grid[i][j]);
                Console.ReadLine();
            }
        }
    }

所以,也许你们可以解释一下我的代码出了什么问题,以及如何正确地读取文本文件?谢谢

您的第二个循环将越界,因为您的循环超过了行的长度(以字符为单位),而不是网格[i]中数组的长度。

    static void Main(string[] args)
    {
        string[] lines = File.ReadAllLines("duom.txt");
        string[][] grid = new string[lines.Length][];
        for (int i = 0; i < lines.Length; i++)
        {
            grid[i] = lines[i].Split(',');
        }
        for (int i = 0; i < lines.Length; i++)
        {
            for (int j = 0; j < **grid**[i].Length; j++)
            {
                Console.WriteLine(grid[i][j]);
                Console.ReadLine();
            }
        }
    }

下面的代码不够用吗?它更短,可以防止在转换为数组之前将整个文件复制到内存中。

var grid  = File.ReadLines("duom.txt")
    .Select(line => line.Split(' ').Select(item => double.Parse).ToArray())
    .ToArray();
foreach(var item in grid.SelectMany(row => row))
{
    Console.WriteLine(item);
}

也许我遗漏了什么,但这个Split(',')看起来很可疑。我在你的例子中看不到','。请改用Split(' ')

感谢大家的帮助,但我自己解决了问题,下面是解决方案:

int h = 0;
        int g = 0;
        string linijos = File.ReadAllText("duom.txt");
        double[][] nuskait = new double[150][];
        foreach (var row in linijos.Split('n'))
        {
            h = 0;
            nuskait[g] = new double[4];
            foreach (var col in row.Trim().Split(' '))
            {
                nuskait[g][h] = double.Parse(col);
                h++;
            }
        }
        g++;

最新更新