Java 方法向前移动数组元素,但最终需要首先显示
我无法将数组向右移动,我想创建一个方法,将所有数组元素向前移动,最后一个元素最终需要首先出现在索引0处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
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;
}