Servus,
das kapiere ich gerade nicht.
Ich bekomme einen Null Pointer in der compare-Methode einer inneren Klasse als Comparator - wie geht das, denn ich kann die Methode doch nur aufrufen, wenn ich die beiden zu vergleichenden Objekte mitschicke?
Beim Zugriff auf u1 oder u2 krachts - mal so mal so?!
das kapiere ich gerade nicht.
Ich bekomme einen Null Pointer in der compare-Methode einer inneren Klasse als Comparator - wie geht das, denn ich kann die Methode doch nur aufrufen, wenn ich die beiden zu vergleichenden Objekte mitschicke?
Beim Zugriff auf u1 oder u2 krachts - mal so mal so?!
Java:
// Baum der die Umkreise vorhaelt
umkreisBaum = new TreeSet<Umkreis>( new Comparator<Umkreis>(){
@Override
public int compare( Umkreis u1, Umkreis u2 )
{
// Comparator
// Umkreise werden nach deren Radius in den Baum eingeordnet.
// Hier reicht der Radiusvergleichswert eines Kreises, um die Ordnung zu
// erstellen und der Winkelvergleichswert um zu testen, ob der Winkel
// des ersten kleiner als der Winkel des groesseren Kreises ist. Spaeter
// kann man mit der Winkelvergleichszahl auch errechnen. ob der Winkel
// kleiner gleich 90 Grad ist.
// Der groesste Umkreis liegt oben im Baum und wird als uTop gegriffen.
// Ganzzahlvariante
//System.out.println("KleinsterKreis - Baum mit Umkreisen anlegen - vergleichen von ");
//System.out.println("U1-a: " + u1.a.xWert + "; "+ u1.a.yWert + "| U1-b: " + u1.b.xWert + "; " + u1.b.yWert + "| U1-c: " + u1.c.xWert + "; " + u1.c.yWert + "|");
//System.out.println("U2-a: " + u2.a.xWert + "; "+ u2.a.yWert + "| U2-b: " + u2.b.xWert + "; " + u2.b.yWert + "| U2-c: " + u2.c.xWert + "; " + u2.c.yWert + "|");
// TODO durchdenken ob hier nicht double besser waere und was beim Cast schiefgehen kann
System.out.println( "KleinsterKreis - compare() - im Vergleich ");
System.out.println( " --> u1 mit a: " + u1.a.toString() + " b: " + u1.b.toString() + " c: " + u1.c.toString() + " wvw:" + u1.winkelVergleichsWert );
System.out.println( " --> u2 mit a: " + u2.a.toString() + " b: " + u2.b.toString() + " c: " + u2.c.toString() + " wvw:" + u2.winkelVergleichsWert );
int erg = u1.istRadiusKleinerAlsVergleichsUmkreis(u2);
if ( erg == 1 )
{
// u1 groesser als u2
//System.out.println(" --> Kreis U1 groesser als U2.");
return 1;
}
......
Zuletzt bearbeitet: