int / Integer / Comparable

Disclaimer: Dieser Thread wurde aus dem alten Forum importiert. Daher werden eventuell nicht alle Formatierungen richtig angezeigt. Der ursprüngliche Thread beginnt im zweiten Post dieses Threads.

int / Integer / Comparable
Ich bräuchte mal Hilfe:

Ich hab gerade einen heapSort geschrieben, der die Instanzvariable des Typs Comparable[] sortieren soll.

Schön und gut, jetzt hab ich ein int- und Integer-Array übergeben, aber er meckert immer, dass das ja keine Comparable-Arrays sind.

Ich dachte wenn ich schon so supi Interfaces habe, sollten die doch genau für sowas funktionieren.

Wie löse ich das Problem?


Hups jetzt klappts doch, dafür bekomme ich einen anderen Fehler.

ich habe die Länge des arr als Instanzvariable gesp:


	private Comparable[] arr;
	private int len = arr.length;
	public Sorting(Comparable[] x){
		arr = x;
	}

Das sind meine Instanzvariablen und Konstruktor.

Main methode:


public static void main(String[] args){
	int[] x  = {5,2,4,7,6,3,1,8,10,9};
	Integer[] z = new Integer[x.length];
	for (int i = 0; i < x.length; i++){
		z[i] = new Integer(x[i]);
	}
	Sorting s = new Sorting(z);
	s.heapSort();

Dann erzählt er mir was von wegen NullPointerException in der Zeile

private int len = arr.length;

Er hat doch nen gscheites Array, da muss doch ne richtige Länge rauskommen!


Ähm, zu dem Zeitpunkt, wo du len definierst, ist arr dummerweise noch null… Ein Array wird das erst nach dem [m]arr = new …[/m]
Und überhaupt, warum willst du da oben die Länge eines (leeren) Arrays (das eh noch keins ist) berechnen? Setz das doch gleich auf Null. Also [m]private int len = 0;[/m]
Oder hast du damit irgendwas größeres weltbewegendes vor, das ich nur noch nicht verstehe? :wink:


Ok, Fehler gefunden, funzt jetzt alles.

Hab das vollkommen übersehen, dass da das arr ja noch garnicht definiert ist.