只要我输入的名称在目录中,以下代码就可以正常工作。如果目录中不存在该名称,则返回NullPointerException。我不明白cos如果目录中不存在该名称,它应该只返回-1。为什么例外?谢谢你的指导。
public class Direct{
//Directory is a class that contain a name and get/set methods for it.
private Directory[] directory = new Directory[100];
public int find(String name){
for (int x=0; x < directory.length; x++){
if (directory[x].getName().equals(name)){ //exception refers to this line to hold the error
return x;
}
}
return -1;
}
}
//Testing on main method
Direct direct = new Direct();
//This works cos the name John is in the directory.
System.out.println(direct.find("John"));
This returns an error cos x is not present in the directory.
System.out.println(direct.find("x"));
答案 0 :(得分:3)
当您创建长度为Directory
的{{1}}数组时,它会以100 100
个引用开始。您已到达所有已填写的null
个对象(如果有),并且在到达数组末尾之前已达到Directory
引用。
在访问null
之前测试directory[x]
为null
。是否立即返回getName()
数组元素上的-1
或继续搜索数组取决于您。
答案 1 :(得分:0)
directory[x].getName()
为空。首先检查它是否为空,然后执行.getName()