为什么这些数组元素为空?

时间:2013-02-02 16:22:46

标签: java arrays null

我有一个已经用另一个初始化的数组。

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;
}

1 个答案:

答案 0 :(得分:0)

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

你有 if 声明:

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

没有 else ,所以如果字符串!= content.get(i),那么它将在此索引中返回 null (的 A2

因此您可能需要使用值初始化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