java - 这样做的正确方法是什么?初始化/符号未找到错误

标签 java compiler-errors initialization java.util.scanner

我一直在练习扫描仪和异常,它们相当新,所以也许我在这里遗漏了一些东西:

这是编译器表示无法找到文件名或 f 的第一种方式。

do {
            try {
                System.out.print("Enter the file name:  ");
                String filename = k.nextLine();
                Scanner f = new Scanner(new File(filename));
                done = true;
            }
            catch(FileNotFoundException ex1){
                System.out.println("The file "+filename+" does not exist.");
            }
            catch(Exception e){
                System.out.println("Unpredicted exception");
            }
        } while (!done);

我以为我应该把它放在外面来修复它,但是另一种方式它提示 f 和文件名可能尚未初始化

Scanner k = new Scanner(System.in), f;
        String filename;
        boolean done = false;
// Request file from the user
        do {
            try {
                System.out.print("Enter the file name:  ");
                filename = k.nextLine();
                f = new Scanner(new File(filename));
                done = true;
            }
            catch(FileNotFoundException ex1){
                System.out.println("The file "+filename+" does not exist.");
            }
            catch(Exception e){
                System.out.println("Unpredicted exception");
            }
        } while (!done);

最佳答案

将文件名的值初始化为空。这样,如果输入了 catch block ,当您打印错误消息时,它仍然具有可使用的值。

String filename = null;

关于java - 这样做的正确方法是什么?初始化/符号未找到错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23259005/

相关文章:

javascript - Node.js调试js :183

java - Java Disutil CoordinateConversions导入问题

c++ - C++中的静态 map 初始化

java - 串连

具有用户定义函数的体系结构 x86_64 的 C++ undefined symbol

java - Jooq:如何将 Record 映射到具有相同列名的 Pojo 类?

swift - 为覆盖便捷初始化的 SKScene 创建自定义初始化器?(文件名为 :)

c++ - 在构造函数C++中初始化指向函数的成员指针

java - 采用 Enum 参数的静态方法

java - JSP获取不到请求参数