В качестве общего примечания о том, как читать трассировку стека NPE:
Когда вы получите трассировку стека исключений, посмотрите на строку Caused by и первую строку после нее.
Caused by: java.lang.NullPointerException
at CentroidGenerator.nextItem2(CentroidGenerator.java:31)
Исключение нулевого указателя чаще всего возникает, когда вы пытаетесь вызвать метод для объекта, а этот объект имеет значение null. Сообщение об ошибке выше говорит вам, что ошибка возникает в строке 31 CentroidGenerator.java:
if (centroids.length == 0) {
Вызов метода имеет формат object.method, так что вы знаете, что в этом случае объект, который имеет значение null, является центроидом.
Быстрый визуальный способ определить, что является нулевым, — просто посмотреть, что находится слева от точек в строке, где возникает исключение. В строках, где у вас есть вызовы нескольких методов, вы не сразу знаете, какой объект имеет значение null, и вам может потребоваться дополнительное исследование, но не в этом случае.
Чтобы решить проблему, обратитесь к ответу Джона.
person
JRL
schedule
24.03.2011