Java - 对于ArrayList <String>方法中的循环,只返回一个元素

时间:2016-06-20 00:35:35

标签: for-loop arraylist jtable

我正在尝试使用来自一个表的字符串值的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;        
    }

    `

1 个答案:

答案 0 :(得分:1)

您只需更换一次就可以从getTableData()返回。相反,只有在遍历每个文件路径后才能返回。

删除循环中的return语句,而不是使用return null替换最后的return fData