我试图编写一个找到列中最大数字的方法。但是,似乎我有问题找到一种方法来返回列中的最高数字,而不是考虑数组中的所有数字组合。我真的很感激任何意见或反馈!
这是我的代码:
public static void max1(int[][] score) {
for (int i = 0; i < score.length; i++) {
int max = score[0][0];
for (int j = 0; j < score[i].length; j++)
if (score[i][j] > max)
max = score[i][j];
System.out.println(max + " ");
}
}
答案 0 :(得分:4)
您正在尝试查找行中的最大值而不是列。在代码中做一些更改
public static void max1(int[][] score) {
for (int i = 0; i < score[0].length; i++) { // i should be your column
int max = score[0][i];// assign 1st value of the column as max
for (int j = 0; j < score.length; j++){ // j is your row
if (score[j][i] > max){ // check the column elements instead of row elements
max = score[j][i];// get the column values
}
}
System.out.println(max + " ");
}
}
答案 1 :(得分:2)
执行int max = score[0][i];
而不是int max = score[0][0];
因为如果你始终使用score[0][0]
初始化max并且此int大于列中的最大值,则会得到错误的结果。
并做:
if (score[innerloop][outerloop] > max)
max = score[innerloop][outerloop];
而不是:
if (score[outerloop][innerloop] > max)
max = score[outerloop][innerloop];
这是逻辑上的失败,因为第一个索引是列,而secound是行。
score[0][0] = 1;
score[0][1] = 2;
score[0][2] = 3;
score[1][0] = 4;
score[1][1] = 5;
score[1][2] = 6;
score[2][0] = 7;
score[2][1] = 8;
score[2][2] = 9;
数组现在看起来像这个矩阵:
1 2 3
4 5 6
7 8 9
您希望比较例如1,4,7,因此您需要比较score[0][0]
,score[0][1]
,score[0][2]
。因此,secound索引必须是内部for循环的计数器。
答案 2 :(得分:1)
您需要指定要在行中找到最大值和循环的列的索引:
public static int maxCol(int [][] score, int colIndex) {
int max = score[0][colIndex];
for(int i = 0 ; i < score.length ; ++i) {
max = Math.max(max, score[i][colIndex]);
}
return max;
}
答案 3 :(得分:1)
首先,您应该将int max = score[0][0];
更改为int max = Integer.MIN_VALUE;
,因为它可能会产生无效的结果。
第二个是你需要在比较时交换索引
if (score[j][i] > max) {
max = score[j][i];
}
答案 4 :(得分:1)
public static void max1(int[][] score) {
for (int i = 0; i < score.length; i++) {
int max = -1;
for (int j = 0; j < score[i].length; j++)
if (score[i][j] > max)
max = score[i][j];
System.out.println("max: '" + max + "'");
}
}
也许你改变了你的列和行,意味着你也必须切换代码,对我来说已经发生了很多。尝试检查我是否是你的行,j是你的列。< / p>
答案 5 :(得分:1)
以下代码打印每列中的最大数量。
public static void max1(int[][] score) {
for (int i = 0; i < score.length; i++) {
int max = Integer.MIN_VALUE; // set max to minimum value before starting loop
for (int j = 0; j < score[i].length; j++)
{
if (score[i][j] > max)
max = score[i][j];
}
System.out.println(max + " ");
}
}
答案 6 :(得分:1)
static int max1(int[][] score) {
int max = score[0][0]; // set initial value to the first index in array
for (int i = 0; i < score.length; i++) { // cycle through row
for (int j = 0; j < score[i].length; j++) { // cycle through colmn
if (score[i][j] > max) { // if the index value is greater than largest number
max = score[i][j]; // make it the new index value
}
}
} return max;
}