在数组中的任意位置插入元素

Inserting an element at any position in array

提问人:Cristian 提问时间:4/11/2022 最后编辑:Basil BattikhiCristian 更新时间:4/11/2022 访问量:505

问:

我对编程比较陌生,希望能得到一些帮助。我收到错误消息:数组索引超出边界。

static int[] insert1(int z, int arr[], int ins, int p)
{
    int i;


    int newarray[] = new int [z + 1];

    for (i = 0; i < z + 1 ; i++) {
        if (i < p - 1 )
            newarray[i] = arr[i];
        else if (i == p - 1)
            newarray[i] = ins;
        else
            newarray[i] = arr[i - 1];
    }
    return newarray;

}
 public static void main(String[] args) {

    int ins = 20;
    int z = 5;

    Scanner scan = new Scanner(System.in);
    int p = Integer.parseInt((scan.next()));

    arr = insert1(a, arr, ins, p);

    System.out.println("Insert Array:\t" + Arrays.toString(arr));

 }
}
Java 数组 方法 java.util.scanner

评论

1赞 Basil Battikhi 4/11/2022
是否必须使用数组?如果它不是任务,则可以使用 arrayList。
0赞 Cristian 4/12/2022
是的,这是强制性的。

答:

0赞 ilanfriedman 4/11/2022 #1

对于初学者来说,它会让你的生活更轻松,而不必把长度作为输入。只需使用 arr.length 即可获得相同的结果,而不必担心其他变量。

您有一个良好的开端进行插入。一种更有效、更简单的方法是使用多个 for 循环。

int newArray[] = new int[arr.length + 1];
for (int i = 0; i < p; i++) {
    newArray[i] = arr[i];
}
newArray[p] = ins;
for (int i = p + 1; i < newArray.length; i++) {
    newArray[i] = arr[i - 1];
}
return newArray;

如果这不能满足您的要求,请告诉我,我可以对其进行修改。

P.S. 如果你愿意改变更多的代码,你应该考虑使用列表。我很乐意在我的答案中添加一个带有列表的版本。

评论

0赞 ilanfriedman 4/14/2022
答案是肯定的!没关系。如果这可行,您应该将其标记为“解决方案”,以便其他有相同问题的人可以更轻松地找到它