java - 变量可能未从扫描仪初始化?

标签 java while-loop try-catch java.util.scanner

我在try-exception之前声明了扫描仪填充e,但由于某种原因它说变量可能未初始化?

Scanner infile;
        try 
        {
            infile = new Scanner(file);
        }
        catch(FileNotFoundException f)
        {
            System.out.println("Wrong File Path");
        }

        while (infile.hasNext())
        {
           System.out.print("Testing While loop");

最佳答案

考虑一下如果在 new Scanner 构造函数调用中抛出异常会发生什么。构造函数永远不会完成,因此 new Scanner(file) 不会产生值;那么infile呢?

要纠正它,请将 while 循环移至 try block 中:

Scanner infile;
try 
{
    infile = new Scanner(file);

    while (infile.hasNext())
    {
       System.out.print("Testing While loop");
    }
}
catch(FileNotFoundException f)
{
    System.out.println("Wrong File Path");
}

毕竟,异常处理的目的是让它脱离主逻辑。

关于java - 变量可能未从扫描仪初始化?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29983753/

相关文章:

scala - 尝试不完整的表达?

python - Try 语句 (Python)

Java 包和访问修饰符

java - 在 Java Swing 中填充空表

java - Android Studio - JAVA_HOME 未指向有效的 JVM 安装

java - Spring Webflux如何验证所有步骤是否执行成功

java - 尽管评估错误,但扫描仪表达式的 while 循环仍在继续

c - 循环遍历文件并在 C 中打印文件属性

java - java中无效输入后重新提示用户(try and catch)

javascript - 什么更快 : try catch vs Promise