越界出错,不知道我做错了什么?

时间:2013-12-23 04:01:03

标签: java

我不明白我做错了什么或如何得到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;
}

2 个答案:

答案 0 :(得分:1)

你有两个问题。首先,在insertElement中,您不会将原始数组复制到新数组中。其次,您将新元素插入到数组的末尾。数组从0转到s-1,但您尝试在索引s处插入,这会产生异常。

答案 1 :(得分:0)

当您使用包含3个元素的数组调用insertElement时,您的数组newPetslength为4.这些元素为[0][1][2][3]

然后尝试访问索引等于其长度的元素,即[4]。没有这样的元素,所以你得到一个越界异常。