如何解决返回的额外零

问题描述 投票:1回答:2

我正在尝试将数组复制到新数组,然后返回该新数组。问题是我只需要复制特定范围内的数组即可。

我做了一个for语句,将int i分配给决定起点的参数,并将其设置为运行直到到达决定终点的参数。

int[] newSound = new int[sound.length];

for (int i = start_index; i < end_index; ++i) {
    newSound[i] = sound[i];
}
return newSound;

如果数组为[3、2、5、6、9],范围为[1、3],则仅返回[2、5、6]。问题是,当我运行程序时,它返回[0,2,5,6,0]。有谁知道为什么会这样?

java
2个回答
3
投票

通过将数组创建为仅复制范围(start_indexend_index)的大小来固定:

int[] newSound = new int[end_index - start_index];

您的循环现在应该是:

for (int i = start_index; i < end_index; ++i) {
    newSound[i - start_index] = sound[i];
}

如注释中所建议,Arrays.copyOfRange是上述的更好选择,因为它照顾了越界索引和负范围。

像这样使用它:

Arrays.copyOfRange

0
投票

我想我会使用int[] newSound = Arrays.copyOfRange(sound, start_index, end_index); 然后将其转换为数组。

List
© www.soinside.com 2019 - 2024. All rights reserved.