【问题标题】:Java - For loop within ArrayList<String> method only returns one elementJava - ArrayList<String> 方法中的 For 循环仅返回一个元素
【发布时间】:2016-06-20 00:35:35
【问题描述】:

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

    `

【问题讨论】:

    标签: for-loop arraylist jtable


    【解决方案1】:

    您似乎是从getTableData() 返回,只要您进行一次替换。相反,您应该只在遍历每个文件路径后才返回。

    删除循环内的return 语句,并将末尾的return null 替换为return fData

    【讨论】:

    • 哦,我明白了,非常感谢!我对 return 语句的理解一定是错误的,我认为每次迭代的结果都必须返回,以便在下一次迭代之前“存储”它,但这似乎是错误的逻辑。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-08-10
    • 1970-01-01
    • 2016-06-18
    • 2015-09-11
    • 1970-01-01
    • 1970-01-01
    • 2018-11-18
    相关资源
    最近更新 更多