java.lang.NullPointerException

Status
Nicht offen für weitere Antworten.

barca

Aktives Mitglied
Hallo!
Ich habe folgende Methode implementiert.der Compiler liefert mir aber ein NullPointer Exception in zeile 20.ich weiss aber nicht,woher das kommt!!???kann mir jemand helfen??Danke!

Code:
public static double hoechstFrequenz(double[]a){
		double x =0;
		Vector vector = new Vector();
		int []zaehler = new int [a.length];
		//Berechnen, wie oft ein Wert in a vorkommt
		for(int i=0;i<a.length;i++){
			int index=1;
			Double db = new Double(a[i]);
			if(vector.contains(db)){
				for(int j=i+1;j<a.length;j++){
					if(a[i]==a[j]){
						index++;
					}
				}
			}else{
				index=-1;
			}
			
			zaehler[i]=index;
			vec.addElement(db);
		}
		x = moreTooMatch(vector,zaehler);
		return x;

	}
 
Code:
vec.addElement(db);

was soll vec sein? meinst wohl vector.add...
 
also das mit vec war jetzt nur ein fehler beim posten des codes ? nicht das zufällig ein gleichnamiger vektor existiert der nicht korrekt initialisiert wurde.

Die Exception schmeisst er bei addElement ?

Bevor du die Methode aufrufst, überprüf mal ob der Vektor und der übergebene Parameter "null" sind - viel. liegt der Fehler auch woanders....
 
vector kanns ja nicht sein, ist ja ne lokale variable und wird auch initialisiert, kann demnach schlecht null sein. ansich kanns nur das übergebene array sein, dass null ist und ne nullpointer erzeugt, und zwar dann schon in zeile 4.
 
dein Problem ist dein Laufindex i. Du springst ja immerhin aus der schleife, wenn i = a.length ist. und damit greift du dann auf ein Feld zu, was nicht existiert. Dein i wurde ja beim letzten Durchlauf noch um eins erhöt und hat ja somit die Abbruchsbedingung erfüllt.
 
anfänger hat gesagt.:
dein Problem ist dein Laufindex i. Du springst ja immerhin aus der schleife, wenn i = a.length ist. und damit greift du dann auf ein Feld zu, was nicht existiert. Dein i wurde ja beim letzten Durchlauf noch um eins erhöt und hat ja somit die Abbruchsbedingung erfüllt.
das ist leider total falsch.

Allein daher, weil eine NullPointerException geworfen wird - in deinem Falle haette eine ArrazIndexOutOfBoundsException sein muessen.
Ausserdem stimmt nicht, dass nach der schleife nochmals das i verwendet wird - geht ja auch nicht, da es eine lokale Variable der Schleide ist
 
😳 mein fehler. hab gedacht das add wäre ausserhalb der schleife. womit er auf das i hätte auch nicht zugreifen können 😳
 
Code:
x = moreTooMatch(vector,zaehler);

evtl. erzeugt doch die moreTooMatch() die nullpointer? poste die mal...
 
nein,moreTooMatch() ist in Ordnung...aber jetzt hats geklappt.
die NullException ist weg....ich habe aber nichts geändert..komisch ???:L
 
also dem obigen code nach zu urteilen dürfte auch keine npe ausgelöst werden. vielleicht hast du den code vorher nicht richtig gespeichert / neu kompiliert ?
 
Status
Nicht offen für weitere Antworten.

Neue Themen


Zurück
Oben