private void Scan(DoublyLinkedList dList) { // T(n) = O(n)
DNode p1 = dList.getFirst();
while (p1 != null) {
DNode p2 = p1.next;
System.out.println(p1.getElement().toString()); // <--- Here it throws NullPointerException.
if (p2.next != null) {
DNode p3 = p2.next;
if (p3.getElement() != null) {
boolean b = Determinate.isPointRightSide(p1.getElement(), p2.getElement(),p3.getElement());
if (b == true) {
p1 = p1.next;
} else {
p1.next = p3;
p3.prev = p1;
dList.remove(p2);
p1 = p1.prev;
}
} else break;
}else break;
}
}
l'exception:Condition dans la boucle while ne fonctionne pas?
run:
Exception in thread "main" java.lang.NullPointerException
X :8.0 Y: 9.0angle0.0lol
at ConvexHull.GrahamVersion.Scan(GrahamVersion.java:102)
at ConvexHull.GrahamVersion.grahamScan(GrahamVersion.java:83)
at ConvexHull.GrahamVersion.<init>(GrahamVersion.java:25)
Il jette NullPointerException
sur System.out.println(p1.getElement().toString());
. Cela signifie qu'il ne fait pas attention à la condition de boucle while?
En général, vous n'avez pas besoin de faire un appel 'toString()' sur un objet lorsque vous le passez dans la fonction 'println()' d'un 'PrintWriter' (comme' System.out'). La fonction convertira implicitement l'objet en un 'String' par lui-même. –
Par ['String # valueOf()'] (http://download.oracle.com/javase/6/docs/api/java/lang/String.html#valueOf%28java.lang.Object%29), en fait , qui fait implicitement la vérification du pointeur nul. – BalusC
Ressemble assez similaire à http://stackoverflow.com/questions/4289981/about-null-pointer-exception –