0

別の配列で初期化された配列があります。

a1 = a2; //right hand side is actually a method returning an array

返された配列要素を JTextArea に追加できますが、それらを出力するとコンソールに null が表示されます。

for (int i = 0; i < a1.lenght; i++) {
    outputTextArea.append(a1[i]);
    System.out.println(a1[i]);
}

どうしてこれなの?ありがとうございました。

これは方法です:

public String[] searchString(ArrayList<String> content, String string){
    stringArray = new String[content.size()];

    for(int i = 0; i < content.size(); i++){
        if(string.equals(content.get(i))){
            if(content.indexOf(string) == 0) {
                stringArray[i] = content.get(i) + " " + content.get(i+1) + "\n";
            } else if ((content.indexOf(string) > 0) && (content.indexOf(string) < (content.size()-1))) {
                stringArray[i] = content.get(i-1) + " " + content.get(i) + " " + content.get(i + 1) + "\n";
            } else if ((content.indexOf(string)) == (content.size()-1)) {
                stringArray[i] = content.get(i -1) + " " + content.get(i);
            }
        }
    }
    return stringArray;
}
4

1 に答える 1

0

a1ではなくa2からの出力NULL

ifステートメントがあります:

if (string.equals(content.get(i))) {
   .....
}   

elseなしで、文字列 != content.get(i)の場合、このインデックス ( a2 )でnullを返します。

したがって、 a2 を値で初期化するか、次のようにチェックする必要がある場合があります: if(a1[i] != null)

for(int i = 0; i < a1.lenght; i++){
       if(a1[i]!=null){///////////to avoid the null values
        outputTextArea.append(a1[i]);
        System.out.println(a1[i]);
        }
   }

このコードで直面する2番目の問題(コンテンツ配列で文字列を繰り返した場合):

stringArray[i] = content.get(i) + " " + content.get(i + 1) + "\n";

i = content.size() の場合、( i+1 ) はIndexOutOfBoundsExceptionになります

于 2013-02-02T17:05:08.440 に答える