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

输出NULL不是来自a1而是来自a2

你有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]);
        }
   }

您将在此代码中遇到的第二个问题(当您在内容数组中重复字符串时):

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

如果 i = content.size() ,那么 ( i+1 ) 将IndexOutOfBoundsException

于 2013-02-02T17:05:08.440 回答