这是一个从文本文件读取的简单程序,但是以某种方式运行时出现以下错误
线程“主”中的异常java.lang.NullPointerException
程序:
package testenglish;
import java.util.*;
import java.io.*;
public class TestEnglish
{
public static void main(String[] args)
{
Scanner myscanner= null;
try
{
myscanner = new Scanner(new File("file.txt"));
}
catch (FileNotFoundException e)
{
}
while (myscanner.hasNextLine())
{
}
myscanner.close();
}
}
我不明白为什么我得到一个NullPointerException
时myscanner
已经被初始化。
编辑:为什么我不阅读文本文件?它与源代码放置在同一文件夹中。
这种结构
Scanner myscanner= null;
try
{
myscanner = new Scanner(new File("file.txt"));
}
catch (FileNotFoundException e)
{
}
这是一个非常糟糕的主意:本质上,您要说的是要加载文件,但是如果出现任何问题,它应该会静默失败。您捕获了异常,但是对它不执行任何操作(除非通过捕获隐式地对其进行挤压)。
如果代码失败,myscanner
将仍未初始化。尝试使用它时,您将获得一个空指针异常。那就是你正在发生的事情。
您想尝试
try
{
myscanner = new Scanner(new File("file.txt"));
//now do your processing inside here
}
catch (FileNotFoundException e)
{
e.printStackTrace();
}
否则摆脱try
/catch
结构并添加throws FileNotFoundException
到您的方法签名中:
public static void main(String[] args) throws FileNotFoundException
至于为什么找不到文件,这不是问题,它是否与源文件位于同一目录中,而是文件是否位于要从中调用程序的目录中,这不是完全一样的。最安全的选择是将整个路径放在其中。如果您使用的是Windows,请记住,\\
无论您在何处都有一个\
,都需要使用它,因为单个\
在Java中的含义不同。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句