我是新来的,如您所见,这是我的第一篇文章。我正在编写一个程序,该程序读取文件的用户输入,然后继续在计算机(提供用户目录)中搜索该文件,然后打印出找到该文件的确切目录。
问题是,此方法将找到目录,然后无限运行,而我似乎无法脱离它。也许我缺少了一些东西,但我想我涵盖了所有情况,因此当它找到完整目录时,它将停止运行该方法。这是代码:
public void findFile(File d, String fileName, boolean found) {
File[] newArray = d.listFiles();
for (File z : newArray) {
if (fileName.equals(z.getName())) {
System.out.println("The location of the file is: " + z.getParentFile());
break;
}
else if(!found){
if(z.isDirectory() && z.getName().charAt(0) != '.') {
findFile(z, fileName, found);
}
}
}
}
在这里调用该方法(案例3):
switch (answer) {
case 1:
directory(false);
break;
case 2:
directory(true);
break;
case 3:
System.out.println("Enter the file you would like to locate:");
String newFile = keyboard.nextLine();
findFile(new File("/Users/Josh"), newFile, false);
break;
case 4:
break;
case 5:
break;
case 6:
System.out.println("Program ended.");
condition = false;
break;
}
该程序在找到我要查找的文件的目录之后,将通过“ findFile”方法的“ else if”语句无限运行。
很抱歉,如果这是一个不好的帖子或时间太长,我是新手。谢谢。
最佳答案
我会这样重写
public boolean findFile(File d, String fileName) {
boolean found = false;
File[] newArray = d.listFiles();
for (File z : newArray) {
if (fileName.equals(z.getName())) {
System.out.println("The location of the file is: " + z.getParentFile());
found = true;
} else {
if (z.isDirectory() && z.getName().charAt(0) != '.') {
found = findFile(z, fileName);
}
}
if(found){
break;
}
}
return found;
}
关于java - 无法突破for(each)循环Java,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/29840234/