我正在尝试打印数组上的最大和最小值,以及它们各自的下标。我遇到了一个问题,我的代码虽然打印了数组的最高值和最低值,但返回了最大和最小数组的最大下标(无论值如何)。问题出在下面的 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
中,这就是为什么循环结束后,它们包含“最大下标” .
关于java - 代码在应该打印最大值和最小值时打印出数组的最大下标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8439702/