假设我有一系列字符,我已在控制台输入。如何以下列方式将它们写入二维数组:
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
或者使用列表会更好吗?
谢谢!
答案 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数组中的正确位置。