将一维数组写入二维数组

时间:2012-01-29 18:52:04

标签: c# arrays f#

假设我有一系列字符,我已在控制台输入。如何以下列方式将它们写入二维数组:

1 6 11 16 21

2 7 12 17 22

3 8 13 18 23

4 9 14 19 24

5 10 15 20 25

或者使用列表会更好吗?

谢谢!

2 个答案:

答案 0 :(得分:5)

假设您有一个长度为25的一维数组中的输入:

let inputs = [| 1 .. 25 |]

您可以创建一个二维数组,使用Array2D.init函数将数据存储在5x5网格中:

let arr = Array2D.init 5 5 (fun i j -> inputs.[j*5 + i])

该函数使用指定的大小(前两个参数)初始化数组,并调用提供的函数来填充数组中每个元素的值。通过访问索引j*5 + i处的元素,您可以获得样本中所需的结构。

编辑您不能向数组添加行(数组具有固定大小),但您可以轻松创建更大的数组并在其中复制数据:

let bigger = Array2D.zeroCreate 6 5
// Copy the whole contents of the original array
bigger.[0..4, 0..4] <- arr     
// Write new data to the last row
bigger.[5..5, 0..4] <- array2D [[5;10;15;20;25]]

答案 1 :(得分:0)

如果您在输入数字/字符之前知道2D数组的大小,只需使用适当的循环输入正确的位置。如果没有,你需要从数组重写为2D数组(“表”)使用循环

for (int i=0; i<5; i++)
    for(int j = 0; j < 5; j++)
       array2D[j,i] = array[j+i*5]

这将通过数组中的每个字符串,并将它们放在2D数组中的正确位置。