gpt4 book ai didi

java - 使用扫描仪时保存重复值。下一个()

转载 作者:行者123 更新时间:2023-12-02 10:40:44 25 4
gpt4 key购买 nike

我正在 try catch 此处的文件名。我正在测试它,首先给出错误的值。当我给出从最新的(正确路径)到最旧的(不正确的路径)开始的正确值时,我收到多行“就在返回之前”。它是如何在 Sysout 语句中循环的。我该如何解决这个问题?

static String setFilePath(){

String filepath = null;
Scanner keyboard = new Scanner(System.in);
try {
System.out.println("enter the file path");
filepath = keyboard.nextLine();
System.out.println("You have entered :"+filepath);
BufferedReader b = new BufferedReader(new FileReader (filepath));



}
catch (InputMismatchException | FileNotFoundException ex) {
System.out.println("Please enter a proper FilePath");
//in.next(); // Read and discard whatever string the user has entered
ex.printStackTrace();
setFilePath();

}
keyboard.close();
System.out.println("Just before returning :"+filepath);
return filepath;
}

最佳答案

您在 catch 中有一个递归语句:

catch (InputMismatchException | FileNotFoundException ex) {
System.out.println("Please enter a proper FilePath");
//in.next(); // Read and discard whatever string the user has entered
ex.printStackTrace();
setFilePath(); //Right here
}

因此,一旦最终停止递归,堆栈上的所有调用都将解析,并且所有打印语句都将执行。要解决此问题,您需要返回方法的结果,以便堆栈上的方法的结果将退出而不打印。

return setFilePath();

关闭System.in也是不好的做法。一般规则是,如果您没有打开资源,则不应关闭它。

关于java - 使用扫描仪时保存重复值。下一个(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52936130/

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