有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java如何将数组中的所有值向右移位并插入新的第一个值?

这是我目前掌握的代码

for (int i = 0; i < (arr.length - 1); i++) {
    arr[i+1] = arr[i];
}

arr[0] = newNum;

我遇到的问题是,这段代码将初始第一个值arr[0]复制到数组中的每个其他插槽

例如,[2, 7, 5, 3]并插入新的数字6,将输出[6, 2, 2, 2]

任何帮助都将不胜感激


共 (2) 个答案

  1. # 1 楼答案

    你必须从后面开始,回到开头:

    for (int i = arr.length - 1; i >= 1; i ) {
        arr[i] = arr[i - 1];
    }
    
    arr[0] = newNum;
    
  2. # 2 楼答案

    不要重新发明轮子。Java附带了一个复制数组的静态方法,在这里可以很好地实现。这是System.arraycopy对于你的情况,你应该这样做

    System.arraycopy(arr, 0, arr, 1, arr.length - 1);
    arr[0] = newValue;
    

    System.arraycopy的参数是

    • 从中复制的数组
    • 要复制的第一个元素的位置
    • 你要复制到的数组——这个数组和你从中复制的数组是一样的
    • 要复制的第一个元素的目标位置
    • 要复制的元素数