簡體   English   中英

為什么 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 表示不正確答案的數量

在此 boolean 一旦說 java.lang.ArrayIndexOutOfBoundsException 后返回 false

我試圖做的是不允許兩次出現相同的錯誤字符。

這邊:

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

由於您沒有發布felGiss1的創建位置,因此如果felGiss1.length大於felGiss2.length則它將產生異常。 請改為:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM