【发布时间】:2019-01-01 15:50:39
【问题描述】:
我正在尝试创建一个程序,它计算二维数组中每个维度的最小值。所以对于前。如果我有一个数组:
int[][] test = {{1,2,3},{2,3,4},{4,5,6}}
程序将显示:[1,2,4] - 每个维度的最小值。 为此,我创建了一个名为 minimum 的方法,如下所示
static int[] minimum(int[][] arr) {
int[] result = new int [arr.length];
for (int i = 0; i < arr.length; i++) {
for(int j = 0; j < arr[i].length; j++) {
int min = arr[i][0];
if(arr[i][j] < min) {
min = arr [i][j];
result [i] = min;
} else{
}
}
}
return result;
}
但是当我在我的 main 中调用这个方法时,带有一个示例数组
public static void main(String[] args) {
int[][] arr = {{1,2,3,},{3,4,5},{6,6,6}};
System.out.println(Arrays.toString(minimum(arr)));
}
程序显示 [0,0,0,]。您是否知道问题出在哪里以及如何解决?
【问题讨论】:
-
好吧,
int min = arr[i][0];需要向上移动一行,到内部循环之外。但我不明白你为什么收到[0,0,0]。 -
return Arrays.stream(arr).mapToInt(a -> Arrays.stream(a).min().getAsInt()).toArray(); -
@DawoodibnKareem 结果是
[0,0,0],因为if(arr[i][j] < min)永远不会为真,因为min = arr[i][0]并且每个子数组的第一个元素是最小的,所以没有任何东西分配给result数组。 -
当然。我真傻。
-
@shmosel 不错的 Java 8 实现。