【发布时间】:2015-04-24 06:29:33
【问题描述】:
我是新来的,你可以看到这是我的第一篇文章。我正在编写一个程序,它读取文件的用户输入,然后继续在计算机(提供用户目录)中搜索该文件,然后打印出找到该文件的确切目录。
问题是,这个方法会找到目录,然后无限运行,我似乎无法摆脱它。也许我遗漏了一些东西,但我认为我涵盖了所有情况,因此当它找到完整目录时,它会停止运行该方法。代码如下:
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”语句无限运行。 对不起,如果这是一个糟糕的帖子或太长,我是新人。谢谢。
【问题讨论】:
-
你的
findFile方法应该返回一个值,调用者可以决定它是否应该继续处理 -
您没有在方法中设置
found变量。以及为什么要检查文件,如果您没有找到找到的输出?? -
如果'boolean found'表示是否找到文件,那么你的命名约定不好!这里有一些关于如何使命名更有意义的建议。 'boolean found' --> 'boolean isFileFound' 'File[] newArray' --> 'File[] files' 'File z : newArray' --> 'File file : files'