use*_*881 2 java arrays runtime-error compiler-errors arraylist
我一直收到这个错误:
java.lang.IndexOutOfBoundsException:索引:3,大小:3
我试图删除字符串"梅格",它将编译,但我不断收到此错误.
import java.util.ArrayList;
public class CustomerLister2 {
public static void main (String[] args) {
ArrayList<String> name = new ArrayList<String>();
name.add("Chris");
name.add("Lois");
name.add("Meg");
name.add("Meg");
name.add("Brain");
name.add("Peter");
name.add("Stewie");
for ( int i = 0; i < name.size(); i++){
name.get(i);
name.remove(i);
name.set(i,"Meg");
}
for(String names: name){
System.out.println(names);
}
}
}
Run Code Online (Sandbox Code Playgroud)
如果你想删除"Meg"
然后使用它
import java.util.ArrayList;
public class CustomerLister2 {
public static void main (String[] args) {
ArrayList<String> name = new ArrayList<String>();
name.add("Chris");
name.add("Lois");
name.add("Meg");
name.add("Meg");
name.add("Brain");
name.add("Peter");
name.add("Stewie");
for ( int i = 0; i < name.size(); i++){
String tempName = name.get(i);
if(tempName.equals("Meg"){
name.remove(i);
}
}
for(String names: name){
System.out.println(names);
}
}
}
Run Code Online (Sandbox Code Playgroud)
让我们来看看这个算法吧.
我们从这个列表开始.我们将按插入顺序对Megs进行编号,以便更容易跟踪(已经有两个,我们也用"Meg"替换其他名称).
0: Chris
1: Lois
2: Meg#1
3: Meg#2
4: Brain
5: Peter
6: Stewie
Run Code Online (Sandbox Code Playgroud)
我们开始i=0
并致电name.remove(0)
.因此索引0(Chris)被删除,所有剩余的元素向左移动(向下移动索引):
0: Lois
1: Meg#1
2: Meg#2
3: Brain
4: Peter
5: Stewie
Run Code Online (Sandbox Code Playgroud)
请注意,列表现在是一个较小的元素.
该调用name.set(0)
用Meg(#3)替换索引0(现在是Lois).
0: Meg#3
1: Meg#1
2: Meg#2
3: Brain
4: Peter
5: Stewie
Run Code Online (Sandbox Code Playgroud)
这结束了循环的第一遍.现在i=1
.
我们删除了索引1(Meg#1),这让我们得到:
0: Meg#3
1: Meg#2
2: Brain
3: Peter
4: Stewie
Run Code Online (Sandbox Code Playgroud)
并用Meg(#4)替换索引1:
0: Meg#3
1: Meg#4
2: Brain
3: Peter
4: Stewie
Run Code Online (Sandbox Code Playgroud)
现在i=2
.删除索引2:
0: Meg#3
1: Meg#4
2: Peter
3: Stewie
Run Code Online (Sandbox Code Playgroud)
将指数2(彼得)替换为梅格(#5)
0: Meg#3
1: Meg#4
2: Meg#5
3: Stewie
Run Code Online (Sandbox Code Playgroud)
现在i=3
.删除索引3:
0: Meg#3
1: Meg#4
2: Peter
Run Code Online (Sandbox Code Playgroud)
现在我们尝试设置索引3,但它不存在.所以我们得到一个例外.
java.lang.IndexOutOfBoundsException: Index: 3, Size: 3
Run Code Online (Sandbox Code Playgroud)
这表明该列表有3个元素(size = 3),我们尝试访问索引3(但最大索引现在是2).
归档时间: |
|
查看次数: |
24832 次 |
最近记录: |