向前移动数组元素但最终需要首先出现的方法

时间:2017-01-04 00:35:16

标签: java arrays arraycopy

我无法将数组向右移动,我想创建一个向前移动所有数组元素的方法,最后一个元素最终需要首先出现在索引0处。

<header id="header"></header> /* header info goes in here */

我当前的代码返回5,2,3,4,1,而我需要返回5,1,2,3,4,将非常感谢帮助。

3 个答案:

答案 0 :(得分:0)

在一张纸上画出你想要的东西:

Index:   0   1   2   3   4

Input:   1   2   3   4   5
         └─┐ └─┐ └─┐ └─┐ ┆
         ┌┄┼┄┄┄┼┄┄┄┼┄┄┄┼┄┘
         ┆ └─┐ └─┐ └─┐ └─┐
Output:  5   1   2   3   4

所以:

  • 保存索引4的值
  • 将从索引0开始的4个值移至索引1
  • 将保存的值存储在索引0

如果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接受这些参数  *阵列源  *从源头开始索引  *目的地  *从目的地开始索引  *要复制的元素数量

试试这个 http://prntscr.com/dr82wt