lup*_*pin 5 java null nullpointerexception
注意:这是家庭作业/作业,如果您不想回答,请不要回答。
好吧,经过一些搜索和阅读这些:
如何检查数组元素是否为 null 以避免 Java 中的 NullPointerException 优雅地避免 Java 中的 NullPointerException http://c2.com/cgi/wiki?NullPointerException
在如何处理我的代码上的 NullPointerException 错误方面仍然没有取得任何进展,有问题的代码片段:
int findElement(String element) {
int retval = 0;
for ( int i = 0; i < setElements.length; i++) {
if ( setElements[i].equals(element) ) { // This line 31 here
return retval = i;
}
else {
return retval = -1;
}
}
return retval;
}
void add(String newValue) {
int elem = findElement(newValue);
if( numberOfElements < maxNumberOfElements && elem != -1 ) {
setElements[numberOfElements] = newValue;
numberOfElements++;
} else { System.out.println("Element " + newValue + "already exist"); }
}
Run Code Online (Sandbox Code Playgroud)
它可以编译,但向集合中添加新元素会引发 NullPointerException 错误。
D:\javaprojects>java SetDemo
Enter string element to be added
A
You entered A
Exception in thread "main" java.lang.NullPointerException
at Set.findElement(Set.java:31)
at Set.add(Set.java:44)
at SetDemo.main(Set.java:145)
Run Code Online (Sandbox Code Playgroud)
我添加了另一个检查,虽然老实说不知道这是否正确到第 31 行。 if ( setElements != null && setElements[i].equals(element) ) 但仍然没有喜悦。
非常感谢文档/提示或解释。
学习, 羽扇豆
你初始化过setElements
任何地方吗?意义:
String[] setElements = new String[100];
Run Code Online (Sandbox Code Playgroud)
如果您只是声明一个数组变量:
String[] setElements;
Run Code Online (Sandbox Code Playgroud)
作为类的数据成员,它被初始化为null
. 你必须让它指向某件事。您可以内联执行此操作:
public class MyClass {
private String[] setElements = new String[100];
...
}
Run Code Online (Sandbox Code Playgroud)
或者在构造函数中:
public class MyClass {
private String[] setElements;
public MyClass() {
setElements = new String[100];
}
...
}
Run Code Online (Sandbox Code Playgroud)