Hallo liebe JAVA-Gemeinde,
habe folgendes Problem.
Ich dachte bisher, dass nach einem Aufruf von return, eine Methode den angegeben Wert zurückgibt, und die Methode abbricht. Bei einer meiner Methoden ist dies aber nicht der Fall.
ich habe ein Array mit Datumswerten, und habe eine Methode geschrieben, die zu einem Datum den gesuchten Index findet, zuerst habe ich sequentiell gesucht, also mit einer for-Schleife, die jedes elemt prüft, bis das Datum gefunden ist. Ich habe dann aber eine binäre Suche geschrieben.
die Daten sind chronologisch angeordnet, es gibt aber Lücken.
Die Methode sieht wie folgt aus:
Wenn das Datum nach dem letzten Eintrag ist, wird der letzte Index geliefert, wenn es davor ist, soll -1 zurückgegeben werden.
leider wird immer -1 zurückgegeben.
Habe das PRoblem wie folgt gelöst:
Es geht mir also nicht primär um eine Lösung, sondern eher ums Verständnis.
Nach return sollte JAVA die Methode abbrechen, oder nicht?
habe folgendes Problem.
Ich dachte bisher, dass nach einem Aufruf von return, eine Methode den angegeben Wert zurückgibt, und die Methode abbricht. Bei einer meiner Methoden ist dies aber nicht der Fall.
ich habe ein Array mit Datumswerten, und habe eine Methode geschrieben, die zu einem Datum den gesuchten Index findet, zuerst habe ich sequentiell gesucht, also mit einer for-Schleife, die jedes elemt prüft, bis das Datum gefunden ist. Ich habe dann aber eine binäre Suche geschrieben.
die Daten sind chronologisch angeordnet, es gibt aber Lücken.
Die Methode sieht wie folgt aus:
Java:
public int getDateIndex(Date d){
// in this.last ist das letzte Datum gespeichert
if(d.after(this.last)) return this.date.length-1;// choosen Date is after last entry
int low=0,
high=this.c.length-1;
while (low<=high){
int j=new int;
j=(low+high)/2;
if (d==this.date[j]) return j;//Index element found at pos j
if (d.after(this.date[j])){
low=j+1;
}
else high=j-1;
}
// choosen Date is before first entry
return -1;
}
Wenn das Datum nach dem letzten Eintrag ist, wird der letzte Index geliefert, wenn es davor ist, soll -1 zurückgegeben werden.
leider wird immer -1 zurückgegeben.
Habe das PRoblem wie folgt gelöst:
Java:
public int getDateIndex(Date d){
int j=-1;
if(d.after(this.last)) j=this.date.length-1;// choosen Date is after last entry
else {
int low=0,
high=this.c.length-1;
while (low<=high){
j=(low+high)/2;
if (d==this.date[j]) break;//Index element found at pos j
if (d.after(this.date[j])){
low=j+1;
}
else high=j-1;
}
}
// choosen Date is before first entry
return j;
}
Nach return sollte JAVA die Methode abbrechen, oder nicht?