变量可能尚未从Scanner初始化?

时间:2015-05-01 08:24:40

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

我在Scanner infil之前声明了try-exception e,但出于某种原因,它说varible可能尚未初始化?

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");

2 个答案:

答案 0 :(得分:0)

想象一下infile = new Scanner(file);抛出异常的情况。在while (infile.hasNext())时,infile不会被初始化。

您只需更改Scanner infile;的{​​{1}}即可解决此问题。但请注意,如果抛出所述异常,Scanner infile = null;此时仍可为null。您应该将该部分代码放在infile块中。

答案 1 :(得分:0)

解决此问题的最佳方法是使用 Java 的内置类错误处理。

public static void main(String[] args) {
    Scanner infile;
    try {
        infile = new Scanner(new File("filename.txt"));
    } catch (FileNotFoundException f) {
        System.out.println("Wrong File Path");
    }

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

这段代码不会编译,因为有可能找不到文件,不处理错误,但是如果在main函数声明中加上throws FileNotFoundException,异常会被main处理正常运行,不会造成任何问题。

public static void main(String[] args) throws FileNotFoundException{
    Scanner infile;
    infile = new Scanner(new File("filename.txt"));
    
    while (infile.hasNext()) {
        System.out.print("Testing While loop");
    }
}

对不起,如果我的解释不是很好,我自己才刚刚开始接触 Java。