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 |
不能这样做,需要使用循环打印出每个元素,例如:
1 2 |
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; } |