Java 方法在应返回-1时返回NullPointerException
只要我输入的名称在目录中,下面的代码就可以正常工作。如果目录中不存在该名称,则返回NullPointerException。我不明白,因为如果目录中不存在该名称,它应该只返回-1。为什么会有例外?谢谢你的指导Java 方法在应返回-1时返回NullPointerException,java,arrays,Java,Arrays,只要我输入的名称在目录中,下面的代码就可以正常工作。如果目录中不存在该名称,则返回NullPointerException。我不明白,因为如果目录中不存在该名称,它应该只返回-1。为什么会有例外?谢谢你的指导 public class Direct{ //Directory is a class that contain a name and get/set methods for it. private Directory[] directory = new Directo
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"));
公共类直接{
//目录是一个包含名称和get/set方法的类。
私有目录[]目录=新目录[100];
公共整数查找(字符串名称){
for(int x=0;x
当您创建长度为100
的目录
数组时,它从100个null
引用开始。您已到达所有已填充的现有目录
对象(如果有),并且在到达数组末尾之前已到达null
引用
在访问
getName()
之前,测试目录[x]
是否为null
。由您决定是立即在null
数组元素上返回-1
,还是继续搜索数组。当您创建长度100
的目录
数组时,它从100个null
引用开始。您已到达所有已填充的现有目录
对象(如果有),并且在到达数组末尾之前已到达null
引用
在访问
getName()
之前,测试目录[x]
是否为null
。由您决定是立即在null
数组元素上返回-1
,还是继续搜索数组。当您创建长度100
的目录
数组时,它从100个null
引用开始。您已到达所有已填充的现有目录
对象(如果有),并且在到达数组末尾之前已到达null
引用
在访问
getName()
之前,测试目录[x]
是否为null
。由您决定是立即在null
数组元素上返回-1
,还是继续搜索数组。当您创建长度100
的目录
数组时,它从100个null
引用开始。您已到达所有已填充的现有目录
对象(如果有),并且在到达数组末尾之前已到达null
引用
在访问
getName()
之前,测试目录[x]
是否为null
。由您决定是立即在null
数组元素上返回-1
,还是继续搜索数组。目录[x]。getName()
为null。首先检查它是否为null,然后执行.getName()
目录[x]。getName()
为null。首先检查它是否为null,然后执行.getName()
目录[x]。getName()
为null。首先检查它是否为null,然后执行.getName()
目录[x]。getName()
为null。首先检查它是否为null,然后执行.getName()
您是否用一些目录对象初始化了目录数组
您用一些目录对象初始化了目录数组
您用一些目录对象初始化了目录数组
您用一些目录对象初始化了目录数组
您是否用一些目录对象初始化了目录数组
谢谢它能工作。我(错误)的理解是,如果名称不为=null,它应该一直循环到最后。谢谢,它可以工作。我(错误)的理解是,如果名称不为=null,它应该一直循环到最后。谢谢,它可以工作。我(错误)的理解是,如果名称不为=null,它应该一直循环到最后。谢谢,它可以工作。我(错误)的理解是,如果名称不是=null,它应该一直循环到最后。