Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/273.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# 在C语言中从文件读取2D矩阵到2D int数组_C#_Arrays_Matrix_Int - Fatal编程技术网

C# 在C语言中从文件读取2D矩阵到2D int数组

C# 在C语言中从文件读取2D矩阵到2D int数组,c#,arrays,matrix,int,C#,Arrays,Matrix,Int,我在从文件中读取二维文本并将其导入int数组时遇到问题。具体而言,我的文本文件如下所示: 2,3,4,5,6 5,2,3,4,5 2,4,6,7,4 2,7,8,5,6 所以矩阵中的每个单元格都用逗号分隔,每一新行都以新行开头 我试过很多方法让它工作,但我做不到!简单地说,我希望在末尾有一个int[]]或int[,]数组 注:我可以简单地将一维矩阵读入int[]如下: int[] array= File.ReadAllText(fileppath).Split(',').Select(t =&g

我在从文件中读取二维文本并将其导入int数组时遇到问题。具体而言,我的文本文件如下所示:

2,3,4,5,6

5,2,3,4,5

2,4,6,7,4

2,7,8,5,6

所以矩阵中的每个单元格都用逗号分隔,每一新行都以新行开头

我试过很多方法让它工作,但我做不到!简单地说,我希望在末尾有一个int[]]或int[,]数组

注:我可以简单地将一维矩阵读入int[]如下:

int[] array= File.ReadAllText(fileppath).Split(',').Select(t => int.Parse(t)).ToArray();

结果是int[][]。

您正在读取所有行,但代码只处理一行。如果您试图创建一个二维整数数组,则需要如下内容:

字符串文本=@2,3,4,5,6 5,2,3,4,5 2,4,6,7,4;

text.Split'\n'.Selectline=>line.Split','.Selectt=>int.Parset.ToArray.ToArray

其中,出于测试目的,我已将读取的文件替换为静态字符串,请尝试以下操作:

String input = File.ReadAllText( @"c:\myfile.txt" );

int i = 0, j = 0;
int[,] res = new int[10, 10];
foreach (var row in input.Split('\n'))
{
   j = 0;
   foreach (var col in row.Trim().Split(' '))
   {
       res[i, j] = int.Parse(col.Trim());
       j++;
   }
   i++;
}
如果该力不起作用,您也可以选择:

int[][] list = File.ReadAllLines("myfile.txt")
               .Select(l => l.Split(',').Select(i => int.Parse(i)).ToArray())
               .ToArray();

首先需要将每一行的索引添加到第一个维度,然后将该行中的每一列添加到第二个维度

请尝试以下代码:

int[][] array = File.ReadAllText(filepath).Split('\n')
                .Select(r => (r.Split(','))
                .Select(c => int.Parse(c)).ToArray()).ToArray();

为了说明这一点,您遇到的问题是将每一行的引用存储到锯齿数组int[][]或二维数组int[,]

我建议你先看看这里

如果要创建锯齿状数组很简单,第一个维度将是文件中的行数。记住这个锯齿状数组在每个位置都有数组

int[][] a = new int[amountOfLinesTxt][];
因为您可以获得每行的数组,所以您只需要将数组分配到特定位置,例如

int[] array= File.ReadAllText(fileppath).Split(',').Select(t => int.Parse(t)).ToArray();
a[0] = array
其他线路也一样

现在,如果您想使用二维数组,您需要在案例中从指定维度开始,例如int[,]a=newint[amountfrowstext,amountofColumnsTxt]

然后,当您阅读您的行时,您需要将项目保存在其中

int[] array= File.ReadAllText(fileppath).Split(',').Select(t => int.Parse(t)).ToArray();

for(int i = 0; array.Length; i ++)
{
   a[currentRow, i] = array[i];
}

明白了吗?当然,有更好的方法可以使用Linq获得结果,只需看看前面的答案。希望这对我有所帮助,当我将静态字符串粘贴到表单中时,它的换行符丢失了亲爱的Arvin,您的替代方法工作得很好。非常感谢。我不确定,所以请尝试以下方法:float[][]list=File.ReadAllLinesmyfile.txt.Selectl=>l.Split','.Selecti=>float.Parsei.ToArray.ToArray;
int[] array= File.ReadAllText(fileppath).Split(',').Select(t => int.Parse(t)).ToArray();

for(int i = 0; array.Length; i ++)
{
   a[currentRow, i] = array[i];
}