提问人:Cristian 提问时间:4/11/2022 最后编辑:Basil BattikhiCristian 更新时间:4/11/2022 访问量:505
在数组中的任意位置插入元素
Inserting an element at any position in array
问:
我对编程比较陌生,希望能得到一些帮助。我收到错误消息:数组索引超出边界。
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));
}
}
答:
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
答案是肯定的!没关系。如果这可行,您应该将其标记为“解决方案”,以便其他有相同问题的人可以更轻松地找到它
评论