所以我创建了一个包含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();
}
答案 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
。
所以,这里出了点问题。如果您希望我们为您提供帮助,请尝试发布正确的代码和异常堆栈跟踪。堆栈跟踪包含行号,但由于我们没有您的类的完整代码,我们无法知道抛出异常的确切位置。因此,为了增加人们帮助您的机会,请使用明确的评论来标记异常被抛出的点。
祝你好运。