移动数组元素 java
Shift array elements java
我有移动 arr 元素的方法:
private static int[] shiftElements(int[] arr, int n) {
for (int i = 0; i < arr.length; i++) {
arr[i+n] = arr[i];
}
return arr;
}
n - amount of shifting.
当我执行这段代码时出现异常:
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 6
据我了解程序需要更多 space 来包含另一个项目。但我不需要添加
更多项目,我需要转移已经存在。使用 n
参数,如果参数为负,则所有数组向左移动,如果为正,则向右移动,如果为零 - 什么都不会发生。
Examples
ORIGINAL ARRAY: 1,3,5,6,8,10
example:
n = 2
arr: 8,10,1,3,5,6
How to achieve it?
您的异常来自这一行:
arr[i+n] = arr[i];
你得到一个异常,因为 i + n > arr.length.
根据您的示例,您希望将最终位于数组外部的元素添加到前面。
我不会为你做作业,但你可能想使用 if(...)
。或者 mod
表达式...
我有移动 arr 元素的方法:
private static int[] shiftElements(int[] arr, int n) {
for (int i = 0; i < arr.length; i++) {
arr[i+n] = arr[i];
}
return arr;
}
n - amount of shifting.
当我执行这段代码时出现异常:
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 6
据我了解程序需要更多 space 来包含另一个项目。但我不需要添加
更多项目,我需要转移已经存在。使用 n
参数,如果参数为负,则所有数组向左移动,如果为正,则向右移动,如果为零 - 什么都不会发生。
Examples
ORIGINAL ARRAY: 1,3,5,6,8,10
example:
n = 2
arr: 8,10,1,3,5,6
How to achieve it?
您的异常来自这一行:
arr[i+n] = arr[i];
你得到一个异常,因为 i + n > arr.length.
根据您的示例,您希望将最终位于数组外部的元素添加到前面。
我不会为你做作业,但你可能想使用 if(...)
。或者 mod
表达式...