我正在尝试使用来自一个表的字符串值的ArrayList,根据字符串是否以“.tif”或“.tiff”结尾来修改字符串,然后将生成的字符串传输到新表。但是,当我调用此方法时,新表仅接收第一个修改后的字符串。我不确定我的逻辑有什么问题,原始表的第一个元素将被检查以查看它是否满足条件(以“.tif”或“.tiff”结尾)然后从那里得到该字符串将是修改后,添加到ArrayList fData,然后迭代到下一个表值。我不明白为什么该方法不会返回fData中包含的多个元素?
public ArrayList<String> getTableData() {
StringBuilder str = new StringBuilder();
String fString = null;
ArrayList<String> fData = new ArrayList<String>();
while(filePaths != null) {
int size = filePaths.size();
for (int i = 0; i <= size; i++) {
String pathName = filePaths.get(i);
if (pathName.endsWith(".tif")) {
int pathLength = pathName.length();
str = new StringBuilder(filePaths.get(i));
str.insert(pathLength - 4, "_Data");
fString = str.toString();
fData.add(fString);
tableModel2.addRow(new String[] { fString });
return fData;
}
else if (pathName.endsWith(".tiff")) {
int pathLength = pathName.length();
str = new StringBuilder(filePaths.get(i));
str.insert(pathLength - 5, "_Data");
fString = str.toString();
fData.add(fString);
tableModel2.addRow(new String[] { fString });
return fData;
}
}
tableModel2.fireTableDataChanged();
}
return null;
}
`
答案 0 :(得分:1)
您只需更换一次就可以从getTableData()
返回。相反,只有在遍历每个文件路径后才能返回。
删除循环中的return
语句,而不是使用return null
替换最后的return fData
。