我有一个已经用另一个初始化的数组。
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;
}
答案 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