我在使用java时感到疑惑。
有二维数组,如下所示。
int[][] test = {{3, 9, 3, 5}, {4, 19, 4, 9}, {2, 10, 5, 6}};
我想在二维数组中找到每一行的最大值,我想知道如何编码它。
我想结果是
int[] answer = {4, 19, 5, 9}
只需添加评论,我想提取最大值。
[0][0] = 3;
[1][0] = 4;
[2][0] = 2;
[0][1] = 9;
[1][1] = 19;
[2][1] = 10;
[0][2] = 3;
[1][2] = 4;
[2][2] = 5;
[0][3] = 5;
[1][3] = 9;
[2][3] = 6;
So max value is 4, 19, 5, 9
我试过这个方法,但是这个方法是arr [i] [j]比较二维数组中的所有元素,并且在比较中只找到最大值。
for (int i = 0; i < test.length; i++) {
int max = test[i][0];
for (int j = 0; j < test[i].length; j++)
if (test[i][j] > max)
max = test[i][j]
}
答案 0 :(得分:3)
您可以使用第一行初始化结果,然后迭代此矩阵,如果当前元素test[row][column]
大于result[column]
,则重新分配result[column]
:
public static void main(String[] args) {
int[][] test = {{3, 9, 3, 5}, {4, 19, 4, 9}, {2, 10, 5, 6}};
int[] result = test[0];
for (int row = 1; row < test.length; row++) {
for (int column = 0; column < test[0].length; column++) {
if (test[row][column] > result[column]) {
result[column] = test[row][column];
}
}
}
for (int number : result) {
System.out.print(number + " "); // 4 19 5 9
}
}
答案 1 :(得分:1)
根据你的例子,&#34;大&#34;循环正在通过列和&#34;小&#34;循环线。你会有类似的东西:
True
然后你需要一个数组的结果变量:for(int j=0; j<test[0].length; j++) { //loop through columns
for(int i=0; i<test.length; i++) { //loop through lines
}
}
然后你需要一个变量来存储列的最大数量。这个变量将在每个&#34;大&#34;重新初始化。循环,因为你想重新确定最大值
int[] result = new int[test[0].length];
然后对每一行检查数字是否大于最大值。如果用新值替换max。
int[] result = new int[test[0].length]; //Array to store the result
for(int j=0; j<test[0].length; j++) { //loop through columns
int max = 0; //int to store the max of the i column
for(int i=0; i<test.length; i++) { //loop through lines
}
}
最后,当您浏览列的每一行时,将找到的最大值添加到结果中
if(test[i][j] > max) { //if the number at the column i and line j is bigger than max
max = test[i][j]; then max becomes this number
}
这应该给你这个:
result[i] = max; //Add the found max to the result array