我目前正在学习,遇到一个问题,要求在二维数组的每一行中找到最小值,然后将所有的最小值放在数组中。我已经写了一些代码,但是这个方法在控制台中产生了一个非常奇怪的输出,而不是正确的结果。
我在这个2d数组上测试了它 int[][]数组= {8}{3 1,2}{10, 12日,{5、7、4}};,我应该得到的输出是[1,2,4],但我得到的却是[I@7852e922
谁能告诉我我做错了什么?代码如下:
public static int [] min_row(int[][] n){
int [] result = new int[n.length];
int min=0;
for(int i=0;i<n.length;i++){
for(int j=0;j<n[0].length;j++){
if(n[i][j]<n[i][min]){
min=j;
}
result[i]=n[i][min];
}
}
return result;
}
我怀疑您正在打印数组对象本身(请注意,这里最好提供您的整个代码,因为您的代码的其他部分与此问题相关)。我不得不猜)即
int[] result = min_row(someArray);
System.out.println(result);
你不能这样做,你需要使用一个循环打印出每个元素,例如:
for(int i=0; i<result.length;i++)
System.out.println(result[i]);
public static int [] min_row(int[][] n){
int [] result = new int[n.length];
for(int i=0;i<n.length;i++){
int min = Integer.MAX_VALUE; //initial min with MAX int value
for(int j=0;j<n[i].length;j++){
if(min > n[i][j]) // if element smaller than min
{
min= n[i][j]; //assign a new min value
}
}
result[i]= min; //save the min for the row
}
return result;
}