gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-01 11:37:19 25 4
gpt4 key购买 nike

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

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

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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com