我正在尝试在数组上打印最大和最小值,以及它们各自的下标。我遇到了一个问题,尽管我的代码虽然打印了数组的最高和最低值,但是却为最大和最小数组返回了最大的下标(无论值如何)。问题出在下面的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之后的两行都放在大括号中。每次执行循环中的代码时,都会将当前索引写入indexMaxindexMin中,这就是循环结束后它们包含“最大下标”的原因。

09-26 12:11