查找数组中最小元素的索引(Java)

use*_*574 5 java arrays indexoutofboundsexception

我正在尝试编写一个将整数数组作为参数并返回数组中最小元素的索引的代码块。此外,如果列表是空列表,该函数应返回 -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;
}
Run Code Online (Sandbox Code Playgroud)

但是,我收到此错误并且不确定我需要修复什么。

在此处输入图片说明

任何帮助将非常感激。谢谢你。

Era*_*ran 5

该错误是不言自明的。您无法处理空输入数组的情况。

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;
}
Run Code Online (Sandbox Code Playgroud)

如果最小元素出现多次,并且您想返回其第一次出现的索引,请将您的条件更改为:

if (array[i] < min) 
Run Code Online (Sandbox Code Playgroud)

  • @ user430574 你有两个包含最小数字的索引。您需要返回第一个还是最后一个。如果是第一个,将 `if (array[i] &lt;= min)` 改为 `if (array[i] &lt; min)` (2认同)