首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Arrays.fill() - ArrayIndexOutOfBoundsException

Arrays.fill() - ArrayIndexOutOfBoundsException
EN

Stack Overflow用户
提问于 2022-01-20 11:32:11
回答 3查看 111关注 0票数 -2

有人能解释一下为什么我得到ArrayIndexOutOfBoundsException:数组索引超出范围吗??

我有一个简单的数组,例如:{1,2,3,4,5},我想从0到最后一个0之前填写索引:更新后的数组应该是{0,0,0,0,5}。

我试着让我们:

代码语言:javascript
复制
 public static int[] makeLast(int[] nums) {

    int size = nums.length;
    Arrays.fill(nums, nums[0], nums[size-2] ,0);
    return nums;
}

不幸的是,它导致了一个错误,如上文所述。

EN

回答 3

Stack Overflow用户

发布于 2022-01-20 11:34:43

读取相应的爪哇文档:第三个参数是要填充的最后一个索引。因此,方法“填充”从第一个给定的索引到那个索引-1

因此,您必须传递您所关心的索引,而不是在这些索引上的当前内容!

代码语言:javascript
复制
Arrays.fill(nums, 0, size-1 ,0);

请注意,异常消息会告诉您您试图访问无效的索引。因此,真正的答案是:仔细阅读异常消息,并:为您正在使用的库调用读取javadoc。

票数 4
EN

Stack Overflow用户

发布于 2022-01-20 11:45:21

当在数组中找不到开发人员调用索引时,就会发生ArrayIndexOutOfBoundsException,所以我已经检查了数组的大小,并且Marco需要设置数组零的所有值,除了最后一个值。该方法的工作方式类似于这个=> Arrays.fill(数组、FIREST_INDEX、LAST_IDNEX、VALUE);

代码语言:javascript
复制
 public static int[] makeLast(int[] nums) {
        int size = nums.length;
        if (size != 0) {
            Arrays.fill(nums, 0, size - 1, 0);
        }
        return nums;
    }
票数 1
EN

Stack Overflow用户

发布于 2022-01-20 11:38:53

首先,它不作为子字符串来排除最后一个索引。它从给定的第一个索引填充到给定的第二个索引。

其次,如果输入数组为空或只包含一个条目,则方法也会失败。

你把内容传递给那里,而不是实际的索引--所以完全错误地使用了填充方法。

代码语言:javascript
复制
if (nums == null) return null;
int size = nums.length;
if (size > 1)
  Arrays.fill(nums, 0, size-1, 0);
票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70785451

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档