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

新手上路,请多包涵

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

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

在此处输入图像描述

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

原文由 user430574 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 537
2 个回答

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

 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;
}

如果最小元素出现多次,而你想返回它第一次出现的索引,将你的条件更改为:

 if (array[i] < min)

原文由 Eran 发布,翻译遵循 CC BY-SA 4.0 许可协议

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);

原文由 Mikhail Korotkov 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
logo
Stack Overflow 翻译
子站问答
访问
宣传栏