如何将char数组中的第n个元素添加到arraylist?

时间:2015-03-19 04:40:04

标签: java arrays

只是尝试将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;
}

}

3 个答案:

答案 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

在使用之前,您可以检查索引是否在每次迭代时都有效。

出于好奇,要编码的功能是什么?