0

所以我正在制作一个包含 x 个关键点(变量)的子列表,它保存了这个Sublist列表中最好的 300 个。然而,有时找到的点数少于 300,并且 List 会给出 NullPointException。

如果分数少于 300 分,我只想显示一条消息,但是将其放入if声明中(如下所示)是行不通的。我究竟做错了什么?

        List<KeyPoint> Sublist = new ArrayList<KeyPoint>(pointToList.subList(0, 300));
        if(List<KeyPoint> Sublist != 300)
         {
            Toast.makeText(getApplicationContext(), "The list isn't big enough", Toast.LENGTH_SHORT).show();
         }
4

2 回答 2

0

您正在定义一个:pointToList.subList(0, 300) 如果 List 中没有 300 个元素,则获得 NPE 是正常的。您可以做的是首先获取列表的大小,然后制作它的子列表。

不知道这对你有帮助吗?

于 2013-05-27T18:52:19.837 回答
0

该语句if(List<KeyPoint> Sublist != 300)无法工作,因为它无法编译,因为它在语法上是错误的。

我相信你想说:

if(Sublist.size() != 300) {...}

第二点是java程序员以小写字母开头的变量和方法标识符。请遵循 99.9999% 的人使用的命名约定,这个数字将达到 100%。

然后,您的检查没有任何意义可以防止NullPointerException。如果is ,该语句list.subList()可能会抛出此异常。如果参数超过原始列表大小,它会抛出。listnullArrayIndexOutOfBoundsException

所以,这里出了点问题。如果您希望我们帮助您,请尝试发布正确的代码和异常堆栈跟踪。堆栈跟踪包含行号,但由于我们没有您的类的完整代码,我们无法知道异常究竟是在哪里引发的。因此,为了增加人们帮助您的机会,请使用清晰的注释标记引发异常的点。

祝你好运。

于 2013-05-27T19:12:00.670 回答