我正在尝试打印数组上的最大和最小值,以及它们各自的下标。我遇到了一个问题,我的代码虽然打印了数组的最高和最低值,却返回了最大和最小数组的最大下标(无论值是多少)。问题出在下面的for循环中。
int max = arrayOfNumbers[0];
int min = arrayOfNumbers[0];
int indexMax = 0;
int indexMin = 0;
for (int i = 0; i < arrayOfNumbers.length; i++) {
if (max < arrayOfNumbers[i])
max = arrayOfNumbers[i];
indexMax = i;
}
for (int i = 0; i < arrayOfNumbers.length; i++) {
if (min > arrayOfNumbers[i])
min = arrayOfNumbers[i];
indexMin = i;
答案 0 :(得分:1)
这应该有效:
int max = arrayOfNumbers[0];
int min = arrayOfNumbers[0];
int indexMax = 0;
int indexMin = 0;
for (int i = 0; i < arrayOfNumbers.length; i++) {
if (max < arrayOfNumbers[i]) {
max = arrayOfNumbers[i];
indexMax = i;
}
}
for (int i = 0; i < arrayOfNumbers.length; i++) {
if (min > arrayOfNumbers[i]) {
min = arrayOfNumbers[i];
indexMin = i;
}
}
您忘了将if
之后的两行放入大括号中。每次循环中的代码执行时,当前索引都被写入indexMax
和indexMin
,这就是为什么循环完成后,它们包含“最大的下标”。