当应该打印最大和最小时,代码打印出阵列的最大下标

时间:2011-12-09 00:39:18

标签: java arrays

我正在尝试打印数组上的最大和最小值,以及它们各自的下标。我遇到了一个问题,我的代码虽然打印了数组的最高和最低值,却返回了最大和最小数组的最大下标(无论值是多少)。问题出在下面的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;

1 个答案:

答案 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之后的两行放入大括号中。每次循环中的代码执行时,当前索引都被写入indexMaxindexMin,这就是为什么循环完成后,它们包含“最大的下标”。