为什么有一个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]);
}
}
}强文
答案 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]