[英]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.