我的代码中有这个方法
public boolean has(AnyType x){
for(int i=0; i<items.length; i++)
if(items[i] == x)
return true;
return false;
}
我想重写if语句以使用compareTo()方法,根据我的记忆它应该是这样的:
if(items[i].compareTo(x) == 0)
但是这给了我一个错误
Exception in thread "main" java.lang.NullPointerException
我可能做错了什么想法?
答案 0 :(得分:3)
你的一个项目[]为空。 检查元素是否正确设置为非空值。
答案 1 :(得分:2)
NullPointer Exception。检查您的items[i]
值。其中一个值必须为null,这就是编译器抛出NullPointerException
的原因。
if(items[i].compareTo(x) == 0)
执行此操作时,您尝试将空值与x
进行比较,这确实会引发NullPointerException
。
请检查 not-a-null-value
测试。试试这个,
public boolean has(AnyType x){
for(int i=0; i<items.length; i++) {
if(items[i] != null && items[i] ==x)
return true;
return false;
}
}
答案 2 :(得分:1)
您的其中一项为空,您可以在尝试拨打compareTo
之前对其进行验证。
您还可以使用增强型for循环:
public boolean has(AnyType x){
for( AnyType n : items ) {
if( ( n == null && n == x ) ||
( n != null && n.compareTo( x ) == 0 ) ) {
return true;
}
}
return false;
}