我试图弄清楚如何将以下单行 CSV 文件转换为 30x30 2D 数组。
我试过自己查,但我似乎无法将我的大脑包裹在多维数组的概念上,我不知道如何将这样的单行文件变成指定大小的数组.
我希望能够制作一个打印时看起来像这样的数组:
0,0 = 2
0,1 = 2
一直到30,30。
CSV 中的大多数数字确实是 2,但有些是 1。区别是非常重要的。我正在尝试为游戏进行碰撞检测,这个 CSV 文件就是地图。我只需要如何创建这个数组——剩下的交给我。:)
非常感谢大家,祝大家有个愉快的一天。
我试图弄清楚如何将以下单行 CSV 文件转换为 30x30 2D 数组。
我试过自己查,但我似乎无法将我的大脑包裹在多维数组的概念上,我不知道如何将这样的单行文件变成指定大小的数组.
我希望能够制作一个打印时看起来像这样的数组:
0,0 = 2
0,1 = 2
一直到30,30。
CSV 中的大多数数字确实是 2,但有些是 1。区别是非常重要的。我正在尝试为游戏进行碰撞检测,这个 CSV 文件就是地图。我只需要如何创建这个数组——剩下的交给我。:)
非常感谢大家,祝大家有个愉快的一天。
嗯,首先你需要得到数字......
var numbers = Read_File_As_String().Split(new char[',']).Select(n => int.Parse(n)).ToList();
然后,您需要构建您的阵列
const int ROWS = 30;
const int COLS = 30;
var result = new int[ROWS, COLS];
for (int row = 0; row < ROWS; row++)
for (int col = 0; col < COLS; col++)
result[row, col] = numbers[(row * COLS) + col];
假设您的文件首先包含 900 个元素,您需要将其读入..
类似的东西
line = myStreamReader.readLine().Split(',').. 然后在 John U 的示例中,value将是该数组中称为 line 的下一个索引
我会让你找出我的例子中缺少的东西:P
这应该是一个使用 5 x 5 网格的完整示例。我已经尝试过了,似乎可以按预期工作:
namespace ConsoleApplication1
{
using System;
class Program
{
const int MapRows = 5;
const int MapColumns = 5;
static void Main(string[] args)
{
// Create map and the raw data (from file)
var map = new int[MapRows, MapColumns];
string rawMapData = "1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25";
string[] splitData = rawMapData.Split(',');
int index = 0;
// Loop through data
for (int row = 0; row < MapRows; row++)
{
for (int column = 0; column < MapColumns; column++)
{
// Store in map and show some debug
map[row, column] = int.Parse(splitData[index++]);
Console.WriteLine(string.Format("{0},{1} = {2}", row, column, map[row, column]));
}
}
// Wait for user to read
Console.ReadKey();
}
}
}
for(row=0;row<30;row++)
{
for(col=0;col<30;col++)
{
array[row][col] = value;
}
}
每次都需要移动价值以指向下一件事,但我相信你可以弄清楚这一点。
编辑添加:如果它是一张地图,那么首先将它存储为一个数组可能会更容易。
既然您询问了多维数组的概念,这里有一些有用的思考数组的方法。请注意,这些是类比,旨在帮助您将它们形象化。
将一维数组视为项目列表(不是列表的编程意义!)。
将 2D 数组视为一个表(同样,不是编程意义上的!)。在表格(如电子表格)中,您有行和列,并且数组中的每个维度都访问其中一个。
对于更高维的数组,从几何角度思考可能会有所帮助。例如,您可以将 3D 数组视为空间中的 3 维点,将 4D 数组视为时空中的 4 维点。
因此,如果您有一个 CSV 文件,请从概念化如何将其重组为表格开始。一旦你有了它,你就有了一个非常直接的到数组的映射。