有人能解释一下为什么我得到ArrayIndexOutOfBoundsException:数组索引超出范围吗??
我有一个简单的数组,例如:{1,2,3,4,5},我想从0到最后一个0之前填写索引:更新后的数组应该是{0,0,0,0,5}。
我试着让我们:
public static int[] makeLast(int[] nums) {
int size = nums.length;
Arrays.fill(nums, nums[0], nums[size-2] ,0);
return nums;
}不幸的是,它导致了一个错误,如上文所述。
发布于 2022-01-20 11:34:43
读取相应的爪哇文档:第三个参数是要填充的最后一个索引。因此,方法“填充”从第一个给定的索引到那个索引-1。
因此,您必须传递您所关心的索引,而不是在这些索引上的当前内容!
Arrays.fill(nums, 0, size-1 ,0);请注意,异常消息会告诉您您试图访问无效的索引。因此,真正的答案是:仔细阅读异常消息,并:为您正在使用的库调用读取javadoc。
发布于 2022-01-20 11:45:21
当在数组中找不到开发人员调用索引时,就会发生ArrayIndexOutOfBoundsException,所以我已经检查了数组的大小,并且Marco需要设置数组零的所有值,除了最后一个值。该方法的工作方式类似于这个=> Arrays.fill(数组、FIREST_INDEX、LAST_IDNEX、VALUE);
public static int[] makeLast(int[] nums) {
int size = nums.length;
if (size != 0) {
Arrays.fill(nums, 0, size - 1, 0);
}
return nums;
}发布于 2022-01-20 11:38:53
首先,它不作为子字符串来排除最后一个索引。它从给定的第一个索引填充到给定的第二个索引。
其次,如果输入数组为空或只包含一个条目,则方法也会失败。
你把内容传递给那里,而不是实际的索引--所以完全错误地使用了填充方法。
if (nums == null) return null;
int size = nums.length;
if (size > 1)
Arrays.fill(nums, 0, size-1, 0);https://stackoverflow.com/questions/70785451
复制相似问题