编辑:
原始值如下:
mArray[0, 0] = 0;
mArray[0, 1] = 1;
mArray[0, 2] = 2;
mArray[0, 3] = 3;
mArray[1, 0] = 0;
mArray[1, 1] = 1;
mArray[1, 2] = 2;
mArray[1, 3] = 3;
mArray[2, 0] = 0;
mArray[2, 1] = 2;
mArray[2, 2] = 2;
mArray[2, 3] = 3;
mArray[3, 0] = 0;
mArray[3, 1] = 1;
mArray[3, 2] = 3;
mArray[3, 3] = 3;
然后我将所有值存储在一个文本文件中,这就是为什么我在文本文件中拥有这样的所有值...
0
1
2
3
0
1
2
3
0
2
2
3
0
1
3
3
我真正的问题是如何从文本文件中重新填充相同的数组?
int mArray[,];
如何从存储在文本文件中的数据填充数组?与往常一样,使用C#,在本例中为WPF。
答案 0 :(得分:1)
我不完全确定你的问题 你只是试图用文件的行填充数组吗? 这很简单,这样就可以了:
int[] mArray = File.ReadAllLines("pathAndFilename").Select(x => int.Parse(x)).ToArray();
这还够吗? 如果没有,请稍微澄清一下你的问题。
使用更多信息我想你想要更像这样的东西:
private static int[,] FillArrays(string file, int rightLength)
{
int[] mArray = File.ReadAllLines(file).Select(x => int.Parse(x)).ToArray();
int size = mArray.Length / rightLength;
if (((mArray.Length ^ rightLength) >= 0) && (mArray.Length % rightLength != 0))
{
size++;
}
int[,] arrayDos = new int[size, rightLength];
int counter = 0;
int arrayNum = 0;
foreach (int i in mArray)
{
arrayDos[arrayNum, counter] = i;
counter++;
if (counter == rightLength)
{
counter = 0;
arrayNum++;
}
}
return arrayDos;
}
并称之为:
int[,] mArray = FillArrays(@"Z:\testnums.txt", 4);
您可以传入右侧尺寸:
{int[8, 2]}
[0, 0]: 0
[0, 1]: 1
[0, 2]: 2
[0, 3]: 3
[1, 0]: 0
[1, 1]: 1
[1, 2]: 2
[1, 3]: 3
[2, 0]: 0
[2, 1]: 2
[2, 2]: 2
[2, 3]: 3
[3, 0]: 0
[3, 1]: 1
[3, 2]: 3
[3, 3]: 3
2也适用于您的示例数据。
{int[8, 2]}
[0, 0]: 0
[0, 1]: 1
[1, 0]: 2
[1, 1]: 3
[2, 0]: 0
[2, 1]: 1
[3, 0]: 2
[3, 1]: 3
[4, 0]: 0
[4, 1]: 2
[5, 0]: 2
[5, 1]: 3
[6, 0]: 0
[6, 1]: 1
[7, 0]: 3
[7, 1]: 3
答案 1 :(得分:1)
你可能意味着这样的事情? 此函数尽可能地填充二维数组。如果您有一个5x5数组和7行,则该函数返回一个5 * 5数组,其中包含前7个单元格({0,0},{0,1},{0,2},{0,3},{0 ,4},{1,0},{1,1})设置为文本文件中的任何内容。剩下的单元格为空。
public static string[,] GetData(int row, int column, string filePath)
{
int[,] data = new string[row, column];
using (StreamReader reader = File.OpenText(filePath))
{
for (int r = 0; r < data.GetLength(0); r++)
{
for (int c = 0; c < data.GetLength(1); c++)
{
if (reader.EndOfStream)
{
return data;
}
//Note that Parse throw error if the string is not a valid int
//use it only if you anticipate that your file contain int only and other
//string should be considered as errors. otherwise use TryParse
data[r, c] = int.Parse(reader.ReadLine());
}
}
}
return data;
}