[英]try-catch NullPointerException Error within two different classess
我在Tournament
类和Test
类中有一个NullPointerException
。 我在Test
类中调用Tournament
的方法来定义,然后在Tournament类中对其进行分配以创建Team
对象。 它为我提供了Tournament tour = new Tournament();
的NullPointerException
Tournament tour = new Tournament();
和File file = new(fileLocation);
。
我认为这是因为我声明了错误的文件路径,但该文件位于项目文件夹中。为了简化起见,我在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");
}
}
您应该在setFile
方法内部初始化file变量。
public void setFile(String x)
{
this.fileLocation = x;
file = new File(fileLocation);
}
File file;
当前,它正在尝试在设置位置之前使用fileLocation
初始化文件,因此会出现NullPointerException。
为了进一步说明,构造锦标赛时,它将初始化所有变量,这意味着它将按您的要求调用new File(fileLocation)
。 将方法放在代码的第一位没关系; 事实是,当它创建一个新实例时, fileLocation = null
并且在尝试对其进行初始化之前,您将没有机会对其进行设置。
问题是,你的初始化file
在Tournament
在一流的施工时间类,但fileLocation
之后,在初始化setFile
方法。 要解决此问题,请将File
的构造移到setFile
方法中:
class Tournament {
private File file;
public void setFile(String fileLocation)
{
this.file = new File(fileLocation);
}
// ...
}
或改为在构造函数中创建文件:
class Tournament {
private File file;
public Tournament(String fileLocation)
{
this.file = new File(fileLocation);
}
// ...
}
在这两个示例中,似乎都不需要fileLocation
成员变量,因此已将其删除。
错误的路径永远不会抛出NullPointerException
,因此问题不在这里。
编辑:当指定的路径为null
时, File
可以抛出NullPointerException
。 并且在初始化fileLocation
之前先调用它,然后尝试
public Tournament(String x){
fileLocation=x;
file = new File(fileLocation);
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.