gpt4 book ai didi

java - 从数组创建二维矩阵 (java)

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:28:54 24 4
gpt4 key购买 nike

我应该编写一个从数组创建二维矩阵的方法,例如:({1, 2, 3, 4}, 3) 应该返回矩阵 {{1, 2, 3}, { 4}

public class Matrix {
public static int[][]toM(int[] array, int a) {
int[][]matrix = new int [(array.length + a- 1)/ a][a];
for (int i = 0; i < array.length; i++){
int value = array[i];
value = value++;
for (int row = 0; row < (array.length + a- 1)/a; row++) {
for (int col = 0; col < a; col++) {
matrix[row][col]= value++;
}
}
}
return matrix;
}
}

a 是每行中的元素数。如果我的输入是 int[] array = {1,2,3,4} 和 int n =3,我应该如何获得 [[1, 2, 3], [4]]?我得到 [[4, 5, 6], [7, 8, 9]]?

最佳答案

您的代码离基础有点远,不容易修复。对于初学者来说,三层嵌套循环是完全没有必要的;此外,您不会通过编写 value++ 来获取数组元素(也许您对使用 *ptr++ 遍历数组的 C 约定感到困惑)。从第一原则重新开始。

我假设这是家庭作业,所以我不会只为您编写。但这是基本大纲。结果元素的数量取决于输入数组而不是输出矩阵的维度,因此您的算法应该遍历输入元素。对于每个元素,其索引 i 的一些基本数学会告诉您它属于输出矩阵中的位置(rowcol)。将 array[i] 分配给 matrix[row][col]

对于奖励积分,请注意最后一行通常比其他行短。分配 matrix = new int [...][a] 将生成 [[1, 2, 3], [4, 0, 0]] 而不是声明的要求。通过仅分配数组的外部数组 — matrix = new int [...][] 并单独分配每个子数组来解决此问题,使用模数算法对最后一行进行特殊处理。

关于java - 从数组创建二维矩阵 (java),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2706529/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com