java - 从 2D 数组创建一维数组 Java

标签 java arrays multidimensional-array

我正在尝试编写一个方法,该方法采用 2D 数组参数并从中创建一个 1D 数组,其长度等于原始数组中的行数。我还希望新数组的行中的元素等于原始数组每行的最小值。如果原始行为空,我希望新数组等于 0.0。我在下面编写了我的方法,但收到了一个 indexOutOfBounds 错误,我不知道为什么......谢谢

enter  public double[] newOneD(double[][] x) {
int xrow = x.length;
int xcol = x[0].length;
double[] y = new double[xrow];  
int min = 0;
for (int i = 0; i < xrow; i++){ 
    for (int j = 0; j < xcol; j++) {
        if(x[i][j] < x[i][min]) {min = j;}
        y[i] = x[i][min];}
}
return y;}

最佳答案

您的错误是由于您假设每行中的列数等于第一行中的列数而引起的:

int xcol = x[0].length; //this is an assumption that doesn't hold true

如果您确实必须使用数组,那么您可以循环遍历所有行并找出必须使用的长度:

int xcol = 0;
for(int i = 0; i < xrow; i++) {
    xcol = Math.max(xcol, x[i].length);
}

使用这个新的 xcol 值,您的代码可以继续进行。

您也可以考虑使用灵活的数据结构,例如数组列表。

关于java - 从 2D 数组创建一维数组 Java,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49327591/

相关文章:

c - 传递给函数时,多维数组中的指针或声明出现警告

python - 如何向 python(矩阵)多维数组添加列?

java - 自定义内容提供者和拒绝权限异常(exception)

java - 如何在 Apache Commons Mail Api 上设置 Internet 代理?

arrays - Fortran 77 在运行时设置数组大小

java - 加载对象的多维数组

javascript - 单击时获取 Canvas 元素的 ID

java - 在 while 循环内使用 bufferedreader 时获取 NullPointerException

java - Spring MVC 3 验证注释 - 确认电子邮件

php - 存储和遍历这些数据的最有效方法是什么?