【问题标题】:Foreach loop throwing an error I don't exactly understand [duplicate]Foreach循环抛出错误我不完全理解[重复]
【发布时间】:2021-10-31 10:02:58
【问题描述】:

我对 Java 比较陌生,我在编写的方法中遇到了 foreach 循环的问题。我不断收到天文索引越界错误,但我不知道它来自哪里。

这是我的代码。

public static int smallestInt(int[] arr)
{
    int minVal = Integer.MAX_VALUE;
    
    
    for (int value : arr)
    {
        if (arr[value] < minVal)
        {
            minVal = arr[value];
        }
    }
    if (arr.length == 0)
    {
        return Integer.MIN_VALUE;
    }
    
    return minVal;

}

抛出的错误状态:索引 88 超出长度 6 的范围

任何帮助将不胜感激,因为我已经坚持了很长一段时间????

【问题讨论】:

  • 请分享堆栈跟踪。哪一行抛出异常?

标签: java methods foreach error-handling indexoutofboundsexception


【解决方案1】:

尝试将其应用于您的数组

    public static int smallestInt(int[] arr)
{
    int minVal = arr[0];
    
    
    for (int value : arr)
    {
        if (arr[value] < minVal)
        {
            minVal = arr[value];
        }
    }
    
    return minVal;
}

数组值永远不会小于 Integer.MAX_VALUE,因为您将 minVal 变量设置为可以存储为 int 的最大数字,即 2147483647

【讨论】:

    【解决方案2】:

    for-each 循环访问具有隐藏索引的数组值。这个

    if (arr[value] < minVal)
    {
        minVal = arr[value];
    }
    

    应该是

    if (value < minVal)
    {
        minVal = value;
    }
    

    minVal = Math.min(minVal, value);
    

    【讨论】:

      猜你喜欢
      • 2013-12-18
      • 2014-06-06
      • 2022-01-27
      • 2020-11-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-04-23
      • 1970-01-01
      相关资源
      最近更新 更多