我正在尝试从文本文件中读取一些内容。 .txt文件和代码都在我当前的工作目录中。我收到错误fInput可能尚未初始化。我相信这是因为我的程序是我的catch语句而不是try。
这是我的代码段:
Scanner fInput;
try {
fInput = new Scanner(new File("accountData.txt"));
}
catch(Exception e) {
System.out.println("ERROR: File Not Found.");
}
while(fInput.hasNext()) {
String tempID = fInput.next();
String tempFName = fInput.next();
String tempLName = fInput.next();
String tempPNumber = fInput.next();
String tempEmail = fInput.next();
System.out.println(tempID+""+tempFName+""+tempLName+""+tempPNumber+""+tempEmail);
}
有人能说清楚我为什么会这样做吗?感谢。
答案 0 :(得分:0)
是的,问题是如果try
阻止了异常,那么fInput
之后就不会初始化catch
。因此,编译器无法保证fInput
在到达while
循环时将被初始化。如果您仍然希望以这种方式使用Scanner
,则可以通过两种方式修复当前代码:
在try
:
Scanner fInput;
try {
fInput = new Scanner(new File("accountData.txt"));
while(fInput.hasNext()) {
String tempID = fInput.next();
String tempFName = fInput.next();
String tempLName = fInput.next();
String tempPNumber = fInput.next();
String tempEmail = fInput.next();
System.out.println(tempID+""+tempFName+""+tempLName+""+tempPNumber+""+tempEmail);
}
}
catch(Exception e) {
System.out.println("ERROR: File Not Found.");
}
使用支票确保无效安全:
Scanner fInput = null; //This change is important!
try {
fInput = new Scanner(new File("accountData.txt"));
}
catch(Exception e) {
System.out.println("ERROR: File Not Found.");
}
if(fInput!=null) {
while(fInput.hasNext()) {
String tempID = fInput.next();
String tempFName = fInput.next();
String tempLName = fInput.next();
String tempPNumber = fInput.next();
String tempEmail = fInput.next();
System.out.println(tempID+""+tempFName+""+tempLName+""+tempPNumber+""+tempEmail);
}
}
其中任何一个都会避免你的例子中可怕的NullPointerException
。