【问题标题】:ArrayList’s remove(object) giving IndexOutOfBoundsException [duplicate]ArrayList 的 remove(object) 给出 IndexOutOfBoundsException [重复]
【发布时间】:2015-07-01 02:34:12
【问题描述】:

很抱歉,如果以前有人问过这个问题,但我找不到任何有用的东西。基本上,当我将一堆字符添加到 ArrayList,然后尝试删除其中一个字符时,我得到一个 IndexOutOfBoundsException,我不明白为什么。这是我所说的一个一般示例。

public void addChars(){
    ArrayList<Character> chars = new ArrayList<Character>();
    word = "hello";
    chars.add(word.charAt(0));
    chars.add(word.charAt(1));
    chars.add(word.charAt(2));
    chars.add(word.charAt(3));
    chars.add(word.charAt(4));

    chars.remove(word.charAt(1));
}

出现以下错误

Exception in thread "main" java.lang.IndexOutOfBoundsException: Index: 101, Size: 5
at java.util.ArrayList.rangeCheck(ArrayList.java:653)
at java.util.ArrayList.remove(ArrayList.java:492)
at trial.addChars(trial.java:26)
at trial.main(trial.java:31)

我不明白当我试图删除一个字符时如何获得 IndexOutOfBoundsException,java 不应该查看我的 ArrayList“字符”,并且根据字符是否存在来删除或不删除?

如果我更改此代码以删除 ArrayList 中不存在的字符,它可以正常工作,只有当我尝试删除 ArrayList 中的字符时才会出现问题。

谢谢!

【问题讨论】:

  • 听起来char 被视为int,这会使e 101...也许尝试chars.remove((Character)word.charAt(1));...
  • 谢谢,效果很好
  • 那是哪个版本? java的类型系统真的很烂...

标签: java arraylist indexoutofboundsexception


【解决方案1】:
chars.remove((Character)word.charAt(1));

ArrayList.remove() 方法也可以采用整数索引。试试:

chars.remove(chars.indexOf(word.charAt(1)));    

【讨论】:

猜你喜欢
  • 2012-11-06
  • 2010-10-09
  • 2012-08-08
  • 1970-01-01
  • 2015-01-18
  • 2013-06-22
  • 1970-01-01
  • 2015-08-01
相关资源
最近更新 更多