我是新来的,如您所见,这是我的第一篇文章。我正在编写一个程序,该程序读取文件的用户输入,然后继续在计算机(提供用户目录)中搜索该文件,然后打印出找到该文件的确切目录。

问题是,此方法将找到目录,然后无限运行,而我似乎无法脱离它。也许我缺少了一些东西,但我想我涵盖了所有情况,因此当它找到完整目录时,它将停止运行该方法。这是代码:

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/

10-11 20:52
查看更多