Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/304.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 方法向前移动数组元素,但最终需要首先显示_Java_Arrays - Fatal编程技术网

Java 方法向前移动数组元素,但最终需要首先显示

Java 方法向前移动数组元素,但最终需要首先显示,java,arrays,Java,Arrays,我无法将数组向右移动,我想创建一个方法,将所有数组元素向前移动,最后一个元素最终需要首先出现在索引0处 import java.util.Arrays; public class ShiftForward { public static void main(String[] args) { int[] my_array = {1,2,3,4,5}; modify(my_array); System.out.println(Arrays.toString(my_array)); //must re

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

import java.util.Arrays;
public class ShiftForward {
public static void main(String[] args) {
int[] my_array = {1,2,3,4,5};
modify(my_array);
System.out.println(Arrays.toString(my_array)); //must return 5,1,2,3,4
}
public static void modify(int[] m) {
int start = m[0];
System.arraycopy(m,4 ,m,0, m.length -4);
m[m.length -1] = start;

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

在一张纸上绘制您想要的内容:

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?
就好像你正试图以另一种方式旋转


我将把它留给您来实际修复代码。

您的数组副本从索引4开始,请从索引1开始尝试,您正在做的就是调用它。
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;
}