为什么 java.lang.ArrayIndexOutOfBoundsException 发生在这段代码上?

Why does java.lang.ArrayIndexOutOfBoundsException happen on this piece of code?

public boolean felGissningar(char gi, int antalfel){
    if(antalfel>0){
    int test = 0;
    for (int i = 0; i<felGiss1.length; i++){
        if(gi == felGiss1[i]){
            test+=1;
        }
    }
    felGiss2 = new char[antalfel];
    for (int i = 0; i<felGiss1.length; i++){
        felGiss2[i]=felGiss1[i];
    }

    felGiss1 = new char[antalfel+1];
    for (int i =0;i<antalfel; i++){
        felGiss1[i]=felGiss2[i];
    }
    felGiss1[antalfel] = gi;
    System.out.println("1: "+String.valueOf(felGiss1));
    System.out.println("2: "+String.valueOf(felGiss2));
    if(test>0){
        return false;
    } else {
        return true;
    }
    }else {
        felGiss1 = new char[1];
        felGiss1[0]=gi;
        return true;
    }
}

antalfel 表示错误答案的数量

此布尔值一旦显示 java.lang.ArrayIndexOutOfBoundsException

就返回 false

我想做的是不允许两次出现相同的错误字符。

这边:

    felGiss2 = new char[antalfel];
    for (int i = 0; i<felGiss1.length; i++){
        felGiss2[i]=felGiss1[i];
    }

由于您没有 post 创建 felGiss1 的地方,如果 felGiss1.length 大于 felGiss2.length 那么它将产生异常。请更改为:

    felGiss2 = new char[antalfel];
    for (int i = 0; i<felGiss1.length && i < fellGiss2.length; i++){
        felGiss2[i]=felGiss1[i];
    }