英文:
return statement being skipped inside 2 loops
问题
以下是您要求的翻译内容:
我正在使用在网上找到并进行了修改的以下方法,以在给定目录中仅使用文件名查找文件:
public static void main(String[] args)
{
Scanner scan = new Scanner(System.in);
System.out.println("输入要查找的文件名:");
String name = scan.next();
System.out.println("输入要搜索的目录:");
String directory = scan.next();
System.out.println(findFile(name,new File(directory)));
}
public static String findFile(String name,File file)
{
String correctFilePath = null;
ArrayList<String> possiblePaths = new ArrayList<String>();
File[] list = file.listFiles();
String nameToFind = "anyname";
if(list!=null)
for (File fil : list)
{
if (fil.isDirectory())
{
findFile(name,fil);
} else if (name.equalsIgnoreCase(fil.getName()))
{
possiblePaths.add(fil.getParent());
}
}
// 此处,已将所有包含我正在查找的文件名的文件添加到了ArrayList中。
// 但是,我知道路径的结尾是什么,
// 这是我在以下循环中检查的
String filePath;
for (int i = 0; i < possiblePaths.size(); i++)
{
filePath = possiblePaths.get(i);
for (int j = 0; j < nameToFind.length(); j++)
{
if (filePath.charAt(filePath.length() - (j + 1)) ==
nameToFind.charAt(nameToFind.length() - (j + 1)) )
{
if (j == nameToFind.length() - 1)
{
correctFilePath = filePath;
return correctFilePath;
}
}
}
}
return correctFilePath;
}
目前的情况是,一旦找到文件并执行了correctFilePath = filePath
,返回语句将被跳过,并且我被带回到 i 循环的开头,correctFilePath = null
。我该如何修复这个问题?
英文:
I am using the following method that i found online and tweaked to find files in a given directory using only the file's name:
public static void main(String[] args)
{
Scanner scan = new Scanner(System.in);
System.out.println("Enter the file to be searched.. " );
String name = scan.next();
System.out.println("Enter the directory where to search ");
String directory = scan.next();
System.out.println(findFile(name,new File(directory)));
}
public static String findFile(String name,File file)
{
String correctFilePath = null;
ArrayList<String> possiblePaths = new ArrayList<String>();
File[] list = file.listFiles();
String nameToFind = "anyname";
if(list!=null)
for (File fil : list)
{
if (fil.isDirectory())
{
findFile(name,fil);
} else if (name.equalsIgnoreCase(fil.getName()))
{
possiblePaths.add(fil.getParent());
}
}
// Here, all the files containing the name of the file that I am looking
// for have been already added to the ArrayList.
// However, I know what the ending of the path is,
// which is what I am checking in the following loops
String filePath;
for (int i = 0; i < possiblePaths.size(); i++)
{
filePath = possiblePaths.get(i);
for (int j = 0; j < nameToFind.length(); j++)
{
if (filePath.charAt(filePath.length() - (j + 1)) ==
nameToFind.charAt(nameToFind.length() - (j + 1)) )
{
if (j == nameToFind.length() - 1)
{
correctFilePath = filePath;
return correctFilePath;
}
}
}
}
return correctFilePath;
}
Right now, what happens is that once the file is found and correctFilePath = filePath
is executed, the return statement is being skipped, and I am brought back to the beginning of the i loop, with correctFilePath = null
. How could i fix this?
答案1
得分: 1
因此,最终我移除了那个return语句和correctFilePath = filePath;
语句,并且用所需字符串在ArrayList内的位置的指示进行了替代,该位置我设置为静态的。
英文:
So in the end, i took away that return statement and the correctFilePath = filePath;
statement, and replaced both by an indication of the desired String's position inside of the ArrayList, which i set to static.
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论