hallo liebe Java Programmierer ich habe wieder mal ein kleines Problem bei der Lösung einer BlueJ Aufgabe folgende Methode soll den Wert der Arraypostion dem Benutzer übergeben. Wenn man einen Index auserhalb des Arrays eingibt soll die Methode lediglich eine Fehlermeldung im println Stlye zurückgeben, könnt ih mir helfen?
public int gibZahl(int index)
{
int wert=0;
if(index<=zahlen.length-1){
return zahlen[index];
}else
{
System.out.println("ihr Index ist auserhalb des Arraybereichs");
}//end else
return zahlen[index];
}//end gibZahl
irgendwie darf ich nicht das return in der vorletzten zeile entfernen sonst fuckt sich mein compiler ab
public int gibZahl(int index) {
int wert=0;
if(index<=zahlen.length-1) {
return zahlen[index];
} else {
System.out.println("ihr Index ist auserhalb des Arraybereichs");
}//end else
return zahlen[index];
}//end gibZahl
so warum muss das da stehen? ganz einfach weil wenn das nicht wäre, würde die Methode im falle des else-zweiges gar kein return mehr verwenden und das wäre nich mit der deklaration der methode konform. Diese Methode muss immer einen int zurückgeben.
so .. weiterhin: die bedingung (if ... ) ist so nicht ganz korrekt, der Nutzer könnte ja eine negative Zahl angeben, dann würdest du ebenfalls ausserhalb des array-bereiches landen .. also >= 0 && < zahlen.length
dann bist gültig. als allerletztes return solltest eventuell eine negative Zahl zurückgeben, um anzuzeigen das du kein gültigen bereich hast, das muss der Nutzer der Methode natürlich auch gegnprüfen.
als allerletztes return solltest eventuell eine negative Zahl zurückgeben, um anzuzeigen das du kein gültigen bereich hast, das muss der Nutzer der Methode natürlich auch gegnprüfen.
int zahl = -1; // oder null oder irgendwas ausserhalb des bereiches was drinn sein kann
try{
zahl = zahlen[index];
} catch (NullPointerException e) {
System.err.println("Ungueltiger index");
}
return zahl;
Ganz schlechter Stil ist es, die Fehlermeldung IN die Funktion direkt zu integrierern. Die Funktion sollte aufgerufen werden, und wenn das Resultat fehlerhaft ist, vom Aufrufer eine Fehlermeldung zurückgegeben werden.
Da jede mögliche int-Zahl in Frage kommt, ist es nicht möglich, anhand der zurückgegebenen Zahl zu erkennen, ob der Zugriff korrekt war (also z.B. sowas wie -1 als Fehlercode ist nicht sinnvoll in diesem Fall). Man muss also zwei Dinge zurückgeben: eine Zahl, und die Information, ob das ganze erfolgreich war. Z.B. so:
Code:
class ZahlenArrayZugriffResult
{
ZahlenArrayZugriffResult()
{
zahl=0;
erfolg=false;
}
public int zahl;
public boolean erfolg;
}
...
public ZahlenArrayZugriffResult gibZahl(int index)
{
ZahlenArrayZugriffResult result=new ZahlenArrayZugriffResult();
if(index>-1 && index<array.length)
{
result.zahl=array[index];
result.erfolg=true;
}
return result;
}