嗨,大家好我抓住了异常
java.lang.IndexOutOfBoundsException:索引:1,大小:0
代码看起来像这样:
**ArrayList decoded = new ArrayList(10);
decoded.add(1, "A");**
Run Code Online (Sandbox Code Playgroud)
我真的不明白这里有什么不对吗?
也许有人可以帮我这个.
基本上我想这样做:我有chars例如喜欢这样:
ABCEDFG
Run Code Online (Sandbox Code Playgroud)
和数字的数组:
321211
Run Code Online (Sandbox Code Playgroud)
我需要先取一个char和第一个数字.char写入S arrayList:
S={"A"};
Run Code Online (Sandbox Code Playgroud)
查看数字并再次在该位置写入相同的字符,如果数字是3然后在第三位:(如果是数字1那么只需在arrayList中写入)
S={"A","","","A"}
Run Code Online (Sandbox Code Playgroud)
并从arrayLists中删除number和char.现在他们看起来像这样:
BCEDFG
21211
Run Code Online (Sandbox Code Playgroud)
再一次直到最后.
我怀疑你在容量和大小之间感到困惑.这一行:
ArrayList decoded = new ArrayList(10);
Run Code Online (Sandbox Code Playgroud)
...创建一个容量为10 的列表(在添加第11个元素之前不需要内部增长),但是大小为0. 唯一可以添加任何内容的索引是0.
如果您希望能够在任意位置设置值,则应首先填充列表,例如(使用泛型只是因为我讨厌使用原始类型):
List<String> decoded = new ArrayList<String>(10);
for (int i = 0; i < 10; i++) {
decoded.add(""); // Or perhaps null
}
...
decoded.set(1, "S"): // This is now fine, replacing element 1
Run Code Online (Sandbox Code Playgroud)
或者,如果您已经知道所需的大小,则可以使用数组开始 - 它们具有固定大小,并且每个元素都是元素类型的默认值(null例如,对于字符串):
String[] decoded = new String[10];
decoded[1] = "S";
Run Code Online (Sandbox Code Playgroud)