在数组中插入元素 - JAVA

时间:2016-01-09 13:25:04

标签: java arrays exception insert

为什么有一个ArrayIndexOutOfBounds异常..请澄清:) 我试过改变数组的大小,但我仍然无法创建成功的程序 import java.util.Scanner;

类插入 {

public static void main(String[]args) throws Exception
{
    Scanner sc = new Scanner(System.in);
    int a[]= new int[5];
    int i;


    for(i=0;i<a.length-1;i++)
    {
        System.out.println("Enter the Element : ");
        a[i]=sc.nextInt();

    }

    System.out.println("Enter the location for insertion : ");
    int loc = sc.nextInt();
    System.out.println("Enter the value for location : " +loc+" is");
    int value = sc.nextInt();

    for(i=a.length-1;i>loc;i--)
    {
        a[i+1]=a[i];
    }
    a[loc-1] = value;
    System.out.println("New Array is : ");

    for (i=0;i<=a.length-1;i++)
    {
        System.out.println(a[i]);
    }
}

}强文

3 个答案:

答案 0 :(得分:1)

在这部分:

for(i=a.length-1;i>loc;i--)
    {
        a[i+1]=a[i];
    }

在第一次迭代中,[i + 1]与[a.length]相同,但数组中的最后一个元素是[a.length-1] ,因为第一个元素是[0],最后一个是[length-1],总共a.length个元素数。所以相应地修改你的循环。

一方面注意,当您定义数组的大小时,您无法更改它。大小是不可变的。因此,您无法插入元素并尝试移动所有元素,因为您需要将大小增加1,这是不可能的。 对于此方案,请使用ArrayList<Integer>>添加新元素时,ArrayList大小会增加

答案 1 :(得分:0)

这是for循环抛出RuntimeException

for(i=a.length-1;i>loc;i--) {
    a[i+1]=a[i];
}

您正在尝试设置数组的i + 1元素的值,该值不存在。

答案 2 :(得分:0)

/* Inserting an element in an array using its Index */


import java.util.*;
public class HelloWorld{

     public static void main(String []args){
        
        int[] a = {1,2,3,4,5};
        int[] b = new int[a.length + 1]; 
        int index = 2;
        int element = 100;
        
        System.out.println("The original array is: "+ Arrays.toString(a));
        
        // In this for loop we iterate the original array from the front
        for (int i = 0; i<index; i++){
            b[i] = a[i];
        }
        // Here we insert the element at the desired index
        b[index] = element;
        
        // In this for loop we start iterating the original array from back.
        for (int i = a.length; i>index; i--){
            b[i] = a[i-1];
            // b[3] = a[2];
        }
        
        System.out.println("The new Array is: " + Arrays.toString(b));
     }
}

输出:

原始数组为:[1、2、3、4、5]

新数组为:[1、2、100、3、4、5]