我对编程比较陌生,希望得到一些帮助。我收到错误消息:数组索引超出范围。
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));
}
}
对于初学者来说,不必将长度作为输入,这将使您的生活变得更加轻松。只需使用 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;
如果这不能满足您的要求,请告诉我,我可以修改它。
附注如果您愿意更改更多代码,您应该考虑使用Lists。我很乐意在我的答案中添加一个带有列表的版本。
我将使用此方法在数组中的任何位置插入操作,方法是将元素向右移动,例如位于所需位置的右侧:
{1 , 2 , 3 , 4 ,5 ,6 ,7 ,8 ,9 10}
,我们想要将 x
作为元素插入到所需位置 x = 50;
to : {1 , 2 , 3 , 4 , 50 , 5 , 6 , 7 , 8 , 9 , 10}
具体
pos = 5;
//this to insert element at a specific position
//in an array
class Insertion {
//shift elements to the right side
//which are on the right side of pos
static void isertElement(int arr[] , int n , int x , int pos ){
for(int i = n - 1; i > = pos; i--) {
arr[i + 1] = arr[i];
arr[i] = x;
}
}
public static void main(String args []) {
int arr[] = new int[6];
arr[0] = 2;
arr[1] = 4;
arr[2] = 1;
arr[3] = 8;
arr[4] = 5;
int n = 5;
int x = 10 , pos = 2;
System.out.print("Before the isertion");
for(int i = 0; i < n; i++) {
System.out.print(arr[i] + " ");
}
//inserting key at specific position
insertElement(arr , n , x , pos);
n += 1;
System.out.print("\n After the insertion: ");
for(int i = 0; i < n; i++){
System.out.print(arr[i] + " ");
}
}
}