2015-12-01 8 views
7

Ich bin neu in Java. Ich habe versucht, etwas ohne Erfolg zu tun. Grundsätzlich Was ich tun möchte, ist eine Methode zu erstellen, die wahr oder falsch zurückgibt. Die Methode ruft einige Parameter ab, prüft, ob ein bestimmtes Array voll ist, wenn nicht, schiebt sie die Parameter in die erste Zelle, die nicht leer ist, gibt true zurück und prüft NICHT den Rest des Arrays. Wenn das Array voll ist, wird nur false zurückgegeben. Dies ist der Code:Zurück wahr und dann brechen von einer for-Schleife

public boolean add(param1, param2, param3){ 
for(int i = 0; i < array.length; i++){ 
    if (array[i] == null){ 
    array[i] = new SomeObject(param1, param2, param3); 
    return true; 
    break; 
    } 
    } 
    return false; 
} 

Aber ich bekomme fehler- "nicht erreichbar Aussage" für "break;". Irgendwelche Hilfe?

Vielen Dank im Voraus!

Antwort

19

Da Sie eine return-Anweisung haben, müssen Sie nicht break aus der Schleife, da die return-Anweisung die Ausführung der Methode beendet. Entfernen Sie einfach die break Anweisung.

+1

Vielen Dank für Ihren Kommentar. Also im Grunde jedes Mal, wenn es eine return-Anweisung innerhalb der Methode gibt, wird die Ausführung beendet, selbst wenn die Rückgabe beispielsweise innerhalb von 3 verschachtelten Schleifen erfolgt? – Avishay28

+2

@ Avishay28 Ja, 'return' kehrt immer aus der Methode zurück. –

2

Da einige Leute auf einer Funktion mit einem einzigen Rückkehrpunkt bestehen, kann die Funktion wie folgt neu formuliert werden, wobei die scheinbare Erwartung der ursprünglichen Frage erfüllt wird.

public boolean add(param1, param2, param3){ 
    boolean result = false; 
    for(int i = 0; i < array.length; i++){ 
     if (array[i] == null){ 
      array[i] = new SomeObject(param1, param2, param3); 
      result = true; 
      break; 
     } 
    } 
    return result; 
} 
+0

Eine solide Herangehensweise, obwohl "Ergebnis" groß geschrieben wird, ist eine erschütternde Abweichung von der Konvention. –

+0

Warum eine andere Variable erstellen? Wie es besser ist als der ursprüngliche Code (ohne die Break-Anweisung natürlich) – Avishay28

+0

Danke für den Kommentar, ich habe es kapitalisiert, um es sozialistischer zu machen. – Codor

0

Ja, denn in dem Moment die Steuerung eine return-Anweisung trifft es wird nur aus einem Verfahren, Schalter oder eine Schleife usw. so dass jeder Code unter der return-Anweisung geschrieben wird nur „nicht erreichbar“ sein. Daher ist es immer ratsam, die Rückgabe am Ende des Blocks (einer Methode) zu platzieren, es sei denn, es wird empfohlen, keinen Code nach der Anweisung in einem einzigen Block zu schreiben, damit Sie einen Fehler erhalten.

Verwandte Themen