当应该返回-1时返回NullPointerException的方法

时间:2014-03-10 19:18:10

标签: java arrays

只要我输入的名称在目录中,以下代码就可以正常工作。如果目录中不存在该名称,则返回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"));

2 个答案:

答案 0 :(得分:3)

当您创建长度为Directory的{​​{1}}数组时,它会以100 100个引用开始。您已到达所有已填写的null个对象(如果有),并且在到达数组末尾之前已达到Directory引用。

在访问null之前测试directory[x]null。是否立即返回getName()数组元素上的-1或继续搜索数组取决于您。

答案 1 :(得分:0)

directory[x].getName()为空。首先检查它是否为空,然后执行.getName()