只是尝试将char数组中的第n个元素添加到Array列表中。但是,当我尝试运行以下方法时,我将得到一个ArrayIndexOutOfBoundsException。我猜这是因为我的x [i + 2]在阵列结束时不起作用?
这是我的方法代码:
public void Encode (char[] x){
for(int i = 3; i < x.length; i++) {
mid.add(x[i+1]);
bottom.add(x[i+2]);
top.add(x[i]);
top.removeAll(mid);
top.removeAll(bottom);
}
}
public ArrayList getTop(){
return top;
}
public ArrayList getMid() {
return mid;
}
public ArrayList getBottom() {
return bottom;
}
}
答案 0 :(得分:4)
错误在数组索引中,要使用x[i+2]
,您需要将i
约束为x.length-2
。那是
for(int i = 3; i < x.length - 2; i++) {
当i = x.length - 2时,+ 2是x.length(超出范围)。
答案 1 :(得分:1)
mid.add(x[i+1]); is throwing exception.
您的Array大小必须始终大于索引+ 1,而不是从数组中提取的索引。
您应该使用类似
的内容public void Encode (char[] x){
for(int i = 3; i < x.length; i++) {
int size=x.length-1;
if (size>(i+1)) {
mid.add(x[i+1]);
}
if (size>(i+2)) {
bottom.add(x[i+2]);
}
if (size>i) {
top.add(x[i]);
}
top.removeAll(mid);
top.removeAll(bottom);
}
}
答案 2 :(得分:0)
由于ArrayIndexOutOfBoundsException
而引发x[i+2]
,因为i+2
大于x.length
。
在使用之前,您可以检查索引是否在每次迭代时都有效。
出于好奇,要编码的功能是什么?