我正在尝试在数组上打印最大和最小值,以及它们各自的下标。我遇到了一个问题,尽管我的代码虽然打印了数组的最高和最低值,但是却为最大和最小数组返回了最大的下标(无论值如何)。问题出在下面的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;
最佳答案
这应该工作:
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
中,这就是循环结束后它们包含“最大下标”的原因。