我正在尝试将数组复制到新数组,然后返回该新数组。问题是我只需要复制特定范围内的数组即可。
我做了一个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]。有谁知道为什么会这样?
通过将数组创建为仅复制范围(start_index
至end_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
我想我会使用int[] newSound = Arrays.copyOfRange(sound, start_index, end_index);
然后将其转换为数组。
List