簡體   English   中英

沒有打印出鏈表的全部內容

[英]Not printing out full contents of linked list

我對以下方法有點麻煩。

我想打印出目錄中的文件,並從單獨的主類中調用此方法。

盡管這樣做確實可行,但它只會打印出第一個文件,然后停止。

 public String viewDir(String user){
    LinkedList<String> fileNameList = new LinkedList<>();
    File actual = new File("c:\\Server\\" + user + ".");
    for( File f : actual.listFiles()){
        System.out.println(f.getName());    
        fileNameList.add(f.getName());
    }//end of advanced for loop

    for(int j = 0; j < fileNameList.size(); j++){
        return fileNameList.get(j);
    }//end of for loop
    return null;
 }

我通過使用以下方法來調用上述方法:

System.out.println(fileInterface.viewDir(user) + "\n\n");

在第二個循環中調用return表示該循環和整個方法被終止。 列表的第一個元素將返回給調用者。

但是,第一個循環應打印目錄中的所有文件。

那是因為您只返回第一個文件...

for(int j = 0; j < fileNameList.size(); j++){
    return fileNameList.get(j);
}

就像您會做(沒有條件)

return fileNameList.get(0);

改為這樣做:

public LinkedList<String> viewDir(String user){
    LinkedList<String> fileNameList = new LinkedList<>();
    File actual = new File("c:\\Server\\" + user + ".");

    for(File f : actual.listFiles()){
        System.out.println(f.getName());    
        fileNameList.add(f.getName());
    }//end of advanced for loop

    for(int j = 0; j < fileNameList.size(); j++){
        return fileNameList.get(j);
    }//end of for loop

    return null;
}

接着 :

for (String fileName : viewDir(user)) {
    System.out.println(fileName + "\n\n");
}

在一種方法中,您只能執行一個return語句。 由於您要在循環中返回某些內容,因此您實際要做的就是在返回第一個值后停止執行該方法。 如果要返回所有文件名,則可以嘗試構造所有名稱的String並返回整個字符串。

      StringBuilder sb = new StringBuilder();
      for(int j = 0; j < fileNameList.size(); j++){
          sb.append(fileNameList.get(j) + "\n");
      }//end of for loop
      return sb.toString();

您應該在第二個循環之外獲取return語句。

return語句將立即停止函數執行的任何操作,並返回在關鍵字return之后指定的特定值,因此,在您的情況下,它在第一個循環中返回一個值,而該函數再也沒有機會執行第二個和隨后的循環。

因此,您應該做的是獲取變量j的記錄,並在第二個循環之外return fileNameList.get(j)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM