我正在尝试编写一个方法,该方法采用 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/