2013-12-21 48 views
1

我有一點麻煩與下面的方法。不打印出鏈接列表的全部內容

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

雖然這個工作,它只打印出第一個文件,然後停止。

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"); 
+0

**返回fileNameList.toString(); ** –

+0

嗨@MiteshPathak,我注意到您在網站的審查工具中的一些編輯。大多數都很好,只是一件事:請不要使用'code'格式來表達技術術語。這種格式只能用於實際代碼。謝謝! –

+0

@Pekka웃當然會照顧它..... 感謝您的信息 –

回答

0

在一個方法,你只能執行一個return語句。由於你正在循環中返回一些東西,你實際上正在做的是在返回第一個值之後停止方法的執行。如果你想返回所有文件名,那麼你可以嘗試構造一個包含所有名字的字符串並返回整個字符串。

 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(); 
0

那是因爲你只返回的第一個文件...

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

這就像你會做(W/O條件)

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"); 
} 
1

呼叫return在第二回路意味着,環和整個方法得到終止。列表的第一個元素返回給調用者。

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

0

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

The return statement立即停止一切功能正在做並返回關鍵字return後指定一個特定的值,所以在你的情況下,它會返回在第一循環中的值,並且功能從來沒有得到執行第二和以後的機會循環。

所以你應該做的是獲得變量j的記錄,並在第二個循環之外做return fileNameList.get(j)