compareTo()Java快速问题

compareTo()Java快速问题,java,class,methods,if-statement,compareto,Java,Class,Methods,If Statement,Compareto,我的代码中有这个方法 public boolean has(AnyType x){ for(int i=0; i<items.length; i++) if(items[i] == x) return true; return false; } 但这给了我一个错误 Exception in thread "main" java.lang.NullPointerException 你知道我

我的代码中有这个方法

public boolean has(AnyType x){

        for(int i=0; i<items.length; i++)
            if(items[i] == x)
                return true;

        return false;
    }
但这给了我一个错误

Exception in thread "main" java.lang.NullPointerException

你知道我可能做错了什么吗?

你的一个项目[]为空。
检查元素是否正确设置为非空值。

您的一个项目[]为空。 检查元素是否正确设置为非null值。

在需要对象的情况下,当应用程序尝试使用null时,将抛出。检查您的
项目[i]
值。其中一个值必须为null,这就是编译器抛出
NullPointerException
的原因

if(items[i].compareTo(x) == 0)
执行此操作时,您试图将空值与
x
进行比较,这确实会引发
NullPointerException

务必检查非空值测试。试试这个

public boolean has(AnyType x){

      for(int i=0; i<items.length; i++) {
            if(items[i] != null && items[i] ==x)
                   return true;
         return false;
    }
 }
public boolean has(AnyType x){
for(int i=0;i在需要对象的情况下,当应用程序尝试使用null时抛出。请检查
项[i]
值。其中一个值必须为null,这就是编译器抛出
NullPointerException
的原因

if(items[i].compareTo(x) == 0)
执行此操作时,您试图将空值与
x
进行比较,这确实会引发
NullPointerException

一定要检查非空值测试。试试这个

public boolean has(AnyType x){

      for(int i=0; i<items.length; i++) {
            if(items[i] != null && items[i] ==x)
                   return true;
         return false;
    }
 }
public boolean has(AnyType x){

对于(int i=0;i您的项目之一为空,您可以在尝试调用
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;
}

您的一个项目为空,您可以在尝试调用
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;
}

很明显,items[i]是空的。现在找出原因。是的,我有一个计数器来保持数组的大小,在我删除一些项后,由于我正在处理数组,所以我必须更改if语句中的items.length来counterMore关于NullPointer异常:您应该使用equals(),而不是compareTo()。显然,items[i]是空的。现在找出原因。是的,我有一个计数器来保持数组的大小,在我删除一些项后,由于我正在处理数组,所以我必须更改if语句中的items.length以counter更多关于NullPointer异常的信息:您应该使用equals(),而不是compareTo()。非常感谢。我修复了它,确实有一些空值。我只是将items.length更改为保留数组中下一个空值的计数器。非常感谢。我修复了它,确实有一些空值。我只是将items.length更改为保留数组中下一个空值的计数器。