我在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");
答案 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。