我不明白我做错了什么或如何得到OutOfBounds
例外
我的输出是
您当前的元素是:
{cat dog gerbil }
你有什么新宠物?
我的错误是
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 4
at PetFunRunner.insertElement(PetFunRunner.java:67)
at PetFunRunner.main(PetFunRunner.java:35)
我的代码是
public static void main(String[] args)
{
Scanner in = new Scanner(System.in);
String[] originalPets = {"cat", "dog", "gerbil"};
printArray(originalPets);
// PART A
System.out.println("What's the new pet that you got?");
String pet = in.nextLine();
String[] updatedPets = insertElement(originalPets, pet);
printArray(updatedPets);
}
public static String[] insertElement(String[] origArray, String stringToInsert)
{
String[] newPets = new String[origArray.length + 1];
int s = newPets.length;
newPets[s] = stringToInsert;
return newPets;
}
答案 0 :(得分:1)
你有两个问题。首先,在insertElement
中,您不会将原始数组复制到新数组中。其次,您将新元素插入到数组的末尾。数组从0
转到s-1
,但您尝试在索引s
处插入,这会产生异常。
答案 1 :(得分:0)
当您使用包含3个元素的数组调用insertElement
时,您的数组newPets
将length
为4.这些元素为[0]
,[1]
,[2]
和[3]
。
然后尝试访问索引等于其长度的元素,即[4]
。没有这样的元素,所以你得到一个越界异常。