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

问题描述 投票:0回答:2

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

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 arrays methods java.util.scanner
2个回答
0
投票

对于初学者来说,不必将长度作为输入,这将使您的生活变得更加轻松。只需使用 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。我很乐意在我的答案中添加一个带有列表的版本。


0
投票

我将使用此方法在数组中的任何位置插入操作,方法是将元素向右移动,例如位于所需位置的右侧:

{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] + " ");

         }


    }
     


  }
© www.soinside.com 2019 - 2024. All rights reserved.