如果子列表未满,该怎么办

时间:2013-05-27 18:44:46

标签: java android if-statement sublist

所以我创建了一个包含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();
         }

2 个答案:

答案 0 :(得分:0)

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

我不知道这对你有帮助吗?

答案 1 :(得分:0)

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

我相信你想说:

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

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

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

所以,这里出了点问题。如果您希望我们为您提供帮助,请尝试发布正确的代码和异常堆栈跟踪。堆栈跟踪包含行号,但由于我们没有您的类的完整代码,我们无法知道抛出异常的确切位置。因此,为了增加人们帮助您的机会,请使用明确的评论来标记异常被抛出的点。

祝你好运。