Одна вещь, которая выглядит неправильно:
if (!p3.equals(null))
Как правило, это всегда будет верно (если p3 != null
) или выдает исключение NullPointerException (если p3 == null
)
Правильный путьпроверить, является ли p3 ненулевым, это:
if (p3 != null)
Хотя, возможно, это не та причина, по которой вы получаете NullPointerException
Если NullPointerException возникает в выделенной строке, это должно бытьget1 является нулем.Это передается как p3.getElement()
, поэтому выясните, может ли оно быть нулевым.
Теоретически, если data[2]
было бы нулевым, то data[2][0]
выдаст исключение NullPointerException, но поскольку вы инициализируете data
,в этом случае проблем не будет.
Кроме того, есть ли какая-то причина, по которой ваши параметры для defineate () равны Object
вместо Point
?Если это ваш реальный код, а не какой-то упрощенный тестовый пример, тогда все параметры должны быть Point
, поскольку они должны быть такими.
Редактировать:
Я вижу васЯ изменил ваш исходный код, чтобы добавить некоторые предложения на этой странице.
Но я все еще вижу некоторые проблемы:
while (p1!=null) {
DNode p2 = p1.next;
if (p2.next!=null) {
// ^^^^^^^ If p2 is null, then this will throw NullPointerException
DNode p3 = p2.next;
if(p3.getElement()!=null){
// ^^^^^^^^^^^^^^^ If p3 is null, then this will throw NullPointerException
boolean b = Determinate.isPointRightSide(p1.getElement(), p2.getElement(),p3.getElement());
// ^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^ if one of these returns null then isPointRightSide() will throw a NullPointerException