关于java:在2d数组的每一行中查找最小值

Finding Minimum Values in Each Row of 2d Array

本问题已经有最佳答案,请猛点这里访问。

我目前正在研究一个问题,这个问题要求在二维数组的每一行中找到最小值,然后将所有最小值放入一个数组中。我已经写了一些代码,但是这个方法在控制台上产生了一个非常奇怪的输出,而不是正确的结果。

我在这个二维阵列上测试过int[][]数组=3,1,8,{10,12,2},{5,7,4};,我应该得到的输出是[1,2,4],但我得到的是[i@7852E922]

有人能告诉我我做错了什么吗?

这是密码……

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
  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;
  }


我怀疑您正在打印出数组对象本身(请注意,这里建议您提供整个代码,因为您的代码的其他位与此问题相关。我不得不猜测)也就是说。

1
2
int[] result = min_row(someArray);
System.out.println(result);

不能这样做,需要使用循环打印出每个元素,例如:

1
2
for(int i=0; i<result.length;i++)
   System.out.println(result[i]);


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
 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;
  }