Java数组中的元素移位

时间:2019-02-27 05:24:51

标签: java arrays null shift

我在Java中有一个整数对象数组,如下所示:

{3, 5, 7, 9, 11, null, null, null}

我想将数组的所有非空位置向右移一个位置,并在位置0处插入“ 1”。我无法创建新数组或使用其他集合。我最终得到的数组将是:

{1, 3, 5, 7, 9, 11, null, null}

在不覆盖元素的情况下我该如何做?

编辑:是的,我已经开始编写此代码。我在这里是因为我被卡住了!这是一个尝试。

for(int pos = arr.size; pos >= 1; pos--) {
    arr[pos] = arr[pos - 1];
} 
arr[0] = 1;

3 个答案:

答案 0 :(得分:0)

您可以在同一数组中执行此操作,方法是将每个非null项向右移动一个位置。

假设您通过了Integer数组:

Integer[] values; // {3, 5, 7, 9, 11, null, null, null};

您可以移动它们:

// for each position from the second-last to the second
for(int i = values.length - 2; i >= 1; i--) {
    // if the current value is not null
    if(values[i] != null) {
        // put it in the next position to the right
        values[i+1] = values[i];
    }
}
// now set the first item to 1
values[0] = 1;

答案 1 :(得分:0)

您可以使用以下方法。

private void arrayFunction() {
    Integer[] intArray = {3,5,7,11,null,null,null};
    for(int i = intArray.length-1; i >= 0; i--){
        if(i == 0){
            intArray[i] = 0;
        }else{
            intArray[i] = intArray[i-1];
        }

        System.out.println("element "+intArray[i]);
    } 
}

答案 2 :(得分:0)

这是经过测试的代码,您可以检查它。

 Integer[] values = { 3, 5, 7, 11, null, null, null };
    for (int i = values.length - 2; i >= 0; i--) 
                {
                    values[i + 1] = values[i];
                }
                values[0] = 1;

System.out.println(Arrays.toString(values));