查找数组中最小元素的索引 (Java)
Finding the index of the smallest element in an array (Java)
我正在尝试编写一个代码块,它将一个整数数组作为参数,returns 是数组中最小元素的索引。此外,如果列表是空列表,函数应该 return -1。
到目前为止我已经得到了,
public static int indexOfSmallest(int[] array){
int index = 0;
int min = array[index];
for (int i = 1; i < array.length; i++){
if (array[i] <= min){
min = array[i];
index = i;
}
}
return index;
}
但是,我遇到了这个错误并且不确定我需要修复什么。
如有任何帮助,我们将不胜感激。谢谢。
错误不言自明。您未能处理空输入数组的情况。
public static int indexOfSmallest(int[] array){
// add this
if (array.length == 0)
return -1;
int index = 0;
int min = array[index];
for (int i = 1; i < array.length; i++){
if (array[i] <= min){
min = array[i];
index = i;
}
}
return index;
}
如果最小的元素出现多次,而你想return它第一次出现的索引,把你的条件改成:
if (array[i] < min)
如果您的 numbers
数组为空,并且 index
声明为 0,则 min = array[index]
将在您尝试访问不存在的第一个元素时导致错误空列表。
您应该插入一个 if
(在 for
循环之前)来检查 numbers
数组是否为空。
您收到 IndexOutOfBoundsException,因为您试图从行中的空数组中检索值:
int min = array[index];
只需检查此行之前的数组是否为空:
if(array.length < 1) return -1;
public static int indexOfSmallest(int[] arr) {
int imin = 0;
for (int i = 1; i < arr.length; i++) {
if (arr[i] < arr[imin]) {
imin = i;
}
}
return imin;
}
或
int min = Arrays.stream(arr).min().orElseThrow();
int imin = Arrays.stream(arr).boxed().collect(Collectors.toList()).indexOf(min);
我正在尝试编写一个代码块,它将一个整数数组作为参数,returns 是数组中最小元素的索引。此外,如果列表是空列表,函数应该 return -1。
到目前为止我已经得到了,
public static int indexOfSmallest(int[] array){
int index = 0;
int min = array[index];
for (int i = 1; i < array.length; i++){
if (array[i] <= min){
min = array[i];
index = i;
}
}
return index;
}
但是,我遇到了这个错误并且不确定我需要修复什么。
如有任何帮助,我们将不胜感激。谢谢。
错误不言自明。您未能处理空输入数组的情况。
public static int indexOfSmallest(int[] array){
// add this
if (array.length == 0)
return -1;
int index = 0;
int min = array[index];
for (int i = 1; i < array.length; i++){
if (array[i] <= min){
min = array[i];
index = i;
}
}
return index;
}
如果最小的元素出现多次,而你想return它第一次出现的索引,把你的条件改成:
if (array[i] < min)
如果您的 numbers
数组为空,并且 index
声明为 0,则 min = array[index]
将在您尝试访问不存在的第一个元素时导致错误空列表。
您应该插入一个 if
(在 for
循环之前)来检查 numbers
数组是否为空。
您收到 IndexOutOfBoundsException,因为您试图从行中的空数组中检索值:
int min = array[index];
只需检查此行之前的数组是否为空:
if(array.length < 1) return -1;
public static int indexOfSmallest(int[] arr) {
int imin = 0;
for (int i = 1; i < arr.length; i++) {
if (arr[i] < arr[imin]) {
imin = i;
}
}
return imin;
}
或
int min = Arrays.stream(arr).min().orElseThrow();
int imin = Arrays.stream(arr).boxed().collect(Collectors.toList()).indexOf(min);