两个不同类中的java trycatch NullPointerException错误
我在Tournament
类和Test
类中有一个NullPointerException
。我调用Tournament
的方法在Test
类中定义,然后在锦标赛类中分配它来创建Team
对象。它给了我一个关于{
我想这是因为我声明了错误的文件路径,但该文件位于项目文件夹中。为了方便起见,我在Test
类中设置了文件的目录,以便准确地知道问题所在,并在需要时更改文件。如果您需要更多的类块,请进行注释
测试等级:
Tournament tour = new Tournament();
tour.setFile("Tourney2Teams.csv");
锦标赛:
Scanner input;
public String fileLocation;
public void setFile(String x)
{
this.fileLocation=x;
}
File file = new File(fileLocation);
这是读取文件的方法:
public void readingFile()
{
try{
input = new Scanner(file).useDelimiter(",");
}
catch (FileNotFoundException e)
{
System.out.print("File Not Found\n");
}
}
# 1 楼答案
错误的路径永远不会抛出
NullPointerException
,所以问题不在这里编辑: ^当指定的路径为}可以抛出
null
时,{NullPointerException
。如果要在初始化fileLocation
之前调用它,请重试# 2 楼答案
问题是,您正在类构造时初始化
Tournament
类中的file
,但是fileLocation
之后在setFile
方法中初始化。要解决此问题,请将File
的构造移到setFile
方法中:或者改为在构造函数中创建文件:
在这两个示例中,
fileLocation
成员变量似乎不需要,因此它已被删除# 3 楼答案
您应该初始化
setFile
方法内部的file变量目前,它试图在您设置位置之前使用
fileLocation
初始化文件,因此出现了NullPointerException为了进一步解释,当您构建锦标赛时,它会初始化所有变量,这意味着它会按照您的要求调用
new File(fileLocation)
。将方法放在代码的第一位并不重要;事实上,当它创建一个新实例时,fileLocation = null
,在它尝试初始化它之前,您将没有机会设置它