我无法将数组向右移动,我想创建一个向前移动所有数组元素的方法,最后一个元素最终需要首先出现在索引0处。
<header id="header"></header> /* header info goes in here */
我当前的代码返回5,2,3,4,1,而我需要返回5,1,2,3,4,将非常感谢帮助。
答案 0 :(得分:0)
在一张纸上画出你想要的东西:
Index: 0 1 2 3 4
Input: 1 2 3 4 5
└─┐ └─┐ └─┐ └─┐ ┆
┌┄┼┄┄┄┼┄┄┄┼┄┄┄┼┄┘
┆ └─┐ └─┐ └─┐ └─┐
Output: 5 1 2 3 4
所以:
如果m
的长度为5,则不此代码正在执行的操作:
int start = m[0]; // Save value at index 0?
System.arraycopy(m, 4, m, 0, m.length - 4); // Move 1 value? From index 4? To index 0?
m[m.length - 1] = start; // Store value at index 4?
就像你试图以另一种方式旋转一样。
我会留给你实际修复代码。
答案 1 :(得分:0)
public static void shiftRight(int[] m) {
final int lastIndex = m.length - 1;
final int last = m[lastIndex];
System.arraycopy(m, 0, m, 1, lastIndex);
m[0] = last;
}
答案 2 :(得分:0)
首先,您需要保存最后一个元素并将其放在最后的第一个索引中。 其次,arraycopy接受这些参数 *阵列源 *从源头开始索引 *目的地 *从目的地开始索引 *要复制的元素数量