【发布时间】:2021-04-09 03:49:45
【问题描述】:
我创建了一个方法,它接受一个Arraylist 的字符串和一个整数。它将删除所有长度小于给定整数的字符串。
例如:
Arraylist = ["abcde", "aabb", "aaabbb", "abc", "ab"]
整数 = 4
所以新的Arraylist 应该是:["abcde", "aabb", "aaabbb"]
但我收到此错误消息:
线程“main”java.lang.IndexOutOfBoundsException 中的异常:索引 3 超出长度 3 的范围
这是我的代码:
public static void main(String[] args){
ArrayList<String> newArrayList = new ArrayList<>();
newArrayList.add("string1");
newArrayList.add("string2");
newArrayList.add("rem");
newArrayList.add("dontremove");
removeElement(newArrayList, 4); // new arraylist must be = [string1, string2, dontremove]
}
public static void removeElement(ArrayList<String> arraylist, int inputLen){
int arrayLen = arraylist.size();
for(int i=0; i<arrayLen; i++){
if(arraylist.get(i).length() < inputLen){
arraylist.remove(i);
i--;
}
}
System.out.println("New Arraylist: " + arraylist);
}
这段代码有什么问题?
【问题讨论】:
-
除了您的逻辑错误之外,名称
removeElement表示您的方法将删除第四个元素。相反,像removeElementsLongerThan这样的名称对阅读您的代码的人更有帮助。此外,您通常不应将变量和参数声明为ArrayList; just useList.
标签: java arraylist indexoutofboundsexception