当前位置: 首页 > 知识库问答 >
问题:

我的ArrayList没有返回所有元素

艾子石
2023-03-14

当我使用System.out.println静态方法时,下面的Java程序显示ArrayList中的所有元素。但是,当我在方法中返回列表时,它只显示ArrayList中的一个元素。我希望你能给我一些指点,让我知道你做错了什么:

import java.io.File;
import java.util.ArrayList;
import java.util.List;

public class FileProcessor {  
  static List<String> theList = null;

  /**
   * 
   * @return List
   */
  public static List<String> processFiles() {      
    try {    
      File f = new File("/Data/fileDump");
      String[] listOfFiles = f.list();

      for(String eachFile: listOfFiles) {  
        if(eachFile.startsWith("hawk") == true) { 
          theList = new ArrayList<>(); 
          theList.add(eachFile); 
          return theList;
        }
      }
    } catch(Exception e) {
      e.printStackTrace();
    }
    return theList;
  }


  public static void main(String[]args) {
    List<String> dataList = FileProcessor.processFiles(); 
    for(String strg: dataList) {
      if(strg != null) {
        System.out.println(strg);
      }
    }
  }
}

共有1个答案

习阳
2023-03-14

用下面的替换您的函数。

      public static List<String>  processFiles() { 
          List<String> theList = null;
          try {    

             File  f = new File("/Data/fileDump");
             String[] listOfFiles = f.list();
             theList = new ArrayList<>(); // initialisation moved outside of loop
             for(String eachFile:   listOfFiles) {  
                 if(eachFile.startsWith("hawk") == true){              
                    theList.add(eachFile); 
               }
             }
             return theList;// return statement moved outside of the loop

          } catch(Exception e) {
             e.printStackTrace();
          }
        return theList;
       }
 类似资料:
  • 问题内容: 在我的工作中,我们有一个使用AngularJS创建的一页站点。 我们正在使用ui-router插件(版本0.2.0)。 最近,我注意到从一种状态切换到另一种状态时,该窗口不会滚动到顶部。 我什至尝试在每次状态更改(使用事件)时使用jQuery的功能将其手动滚动到顶部。但这没有用。 因此,我开始进行调查,并且注意到页面上的每个元素都返回0。 不仅如此,当我将其打印到控制台时,我得到0(无

  • 返回数组中所有 val 的索引。 如果 val 从不出现,则返回 [] 。 使用 Array.forEach() 循环元素和 Array.push() 来存储匹配元素的索引。 返回索引数组。 const indexOfAll = (arr, val) => { const indices = []; arr.forEach((el, i) => el === val && indices.

  • 问题内容: 我正在尝试遍历所有使用forEach 重构的元素。有什么想法为什么在FF,Chrome或IE中不起作用? 问题答案: 您需要使用以下命令将节点列表转换为数组: 或用于循环。 并将ShowResults函数更改为: 为什么我们需要这样做? JavaScript中的某些对象看起来像一个数组,但不是一个。这通常意味着它们具有索引访问和length属性,但是没有任何数组方法。示例包括特殊的变量

  • 问题内容: 如果我有: 里面有双精度值,我应该怎么做才能将所有ArrayList元素加起来? 如? 问题答案: 两种方式: 使用索引: 使用“针对每个”样式:

  • 我正在创建一个进行线性探测以查找键索引的哈希图。如果键已经在索引中,我想增加它的值,而不是向新索引添加一个。 例如,如果我得到字符串“五,五,五”的字数,我的输出是五1,五1,五1,而不是五3。 我认为一定是我的 containsKey 方法,它使用 get 方法来检查我的密钥是否已在映射中。下面是我的Hashmap.java类。

  • 但是我得到了一个错误,它告诉我必须返回一个字符串。当我查看API时,它告诉我它返回的字符串是另一个字符串的子集...这意味着我返回的是一个字符串,对吗?我被告知这是因为我在循环中返回一个字符串,这不是一回事,但我对这意味着什么有点困惑,因为循环不是在方法中吗?有没有人知道我做错了什么或者我该怎么解决这个问题?