CompareTo() Java 快速问题

发布于 2024-11-09 06:00:50 字数 447 浏览 0 评论 0原文

我的代码中有这个方法

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

关于我可能是什么的任何想法做错了??

I have this method in my code

public boolean has(AnyType x){

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

        return false;
    }

and I want to rewrite the if statement to use the compareTo() method, and according to what I remember it should be something like this:

if(items[i].compareTo(x) == 0)

But that is giving me an error

Exception in thread "main" java.lang.NullPointerException

Any ideas of what I might be doing wrong??

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

一杯敬自由 2024-11-16 06:00:50

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

One of your items[] is null.
Check if the elements are properly set to non-null values.

请恋爱 2024-11-16 06:00:50

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

if(items[i].compareTo(x) == 0)

当您执行此操作时,您试图将 null 值与 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;
    }
 }

NullPointer Exception is thrown when an application attempts to use null in a case where an object is required. Check with your items[i] values. One of the value must be a null, so that's why the compiler is throwing a NullPointerException.

if(items[i].compareTo(x) == 0)

When you do this, you are trying to compare a null value with x, which indeed throws a NullPointerException.

Do check for the not-a-null-value test. Try this,

public boolean has(AnyType x){

      for(int i=0; i<items.length; i++) {
            if(items[i] != null && items[i] ==x)
                   return true;
         return false;
    }
 }
难忘№最初的完美 2024-11-16 06:00:50

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

One of your items is null, you can validate it before attempting to call compareTo.

You can also use the enhanced for loop:

public boolean has(AnyType x){
    for( AnyType n : items ) {
        if( ( n == null && n == x )  || 
            ( n != null && n.compareTo( x ) == 0  ) ) { 
            return true;
        }
     }
     return false;
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文