java - 无法跳出for(each)循环java

标签 java for-loop file-io

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

问题是,这个方法会找到目录,但然后无限运行,我似乎无法摆脱它。也许我遗漏了一些东西,但我认为我涵盖了所有情况,这样当它找到完整目录时,它就会停止运行该方法。代码如下:

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/

相关文章:

java - Enum实现部分业务逻辑的能力

java - 模拟对属性文件的依赖

java - 如何将下划线转移到左侧?

r - 2 个连续的嵌套 for 循环 - 是否可以使用 data.table 或 apply 进行优化?添加了 data.table 尝试尚未优化

javascript - 继续嵌套 for 循环

linux - 我怎么知道数据何时写入磁盘?

c - 如何使用 glib 逐行读取 unicode 文件

c++ - 在巢中放置 cout 的适当位置

java - 线程本地删除方法

java - 为什么这没有创建一个对象?