2017-07-05 12 views
0

Jungs, die ich ein Anfänger in Java bin zu brechen ... Ich möchte zum Beispiel eine Funktion einer Schleife durch einen hashmap macht eswie eine Funktion in Java

0[3],3[4,5],6[2] 

enthält und zu brechen, wenn das Verfahren isSiteInherited ist wahr sonst false zurück ... hier ist, was ich

private boolean isInherited() { 
    boolean isInherited = false; 
    for (Entry<Integer, Set<Integer>> entry : siteIndeciesMap.entrySet()) { 
     for (Integer index : entry.getValue()) { 
      if(isSiteInherited(index)){ 
       break; 
      } 
     } 
    } 
    return false; 
    } 

gemacht, wenn keine Websites gefunden werden vererbt return false und wenn es den Bruch geht er von der ganzen Methode brechen sollte ... so etwas mit dieser Methode falsch ist

+0

Wir müssten 'isSiteInherited()' sehen. –

+1

"es sollte von der ganzen Methode brechen" -> nur 'return false;' dann? – Mena

+0

Sie ** brechen ** Schleifen. Um die Methode zu verlassen, kehren Sie einfach von ihr zurück. – GhostCat

Antwort

-1

Sie können entweder eine Beschriftung verwenden, um die äußere Schleife zu unterbrechen (https://stackoverflow.com/a/886979/4949918).

Der bessere Weg wäre wahrscheinlich, einen booleschen Wert zu verwenden, um zu sagen, dass Sie aus der inneren Schleife in der äußeren Schleife heraus gebrochen sind.

+1

Das ist nicht der bessere Weg. Etiketten wurden für diese Situation entwickelt. – Clashsoft

0

Scheint so, als ob Sie return anstelle von brechen möchten. Ohne die Verwendung von Labels, break erhalten Sie nur aus einer Schicht von Schleifen sowieso, und in diesem Fall müssen Sie den Gesamterfolg melden, was nicht Ihre aktuelle Vorgehensweise ist.

private boolean isInherited() { 
    for (Entry<Integer, Set<Integer>> entry : siteIndeciesMap.entrySet()) { 
     for (Integer index : entry.getValue()) { 
      if (isSiteInherited(index)) { 
       return true; 
      } 
     } 
    } 
    return false; 
} 
+0

Man kann natürlich mehr als eine Schicht von Schleifen auf einmal brechen, im Gegensatz zu dem, was hier gepostet wird. –

+0

@LewBloch: Wenn man Etiketten verwendet, sicher; Ich habe jedoch keine Etiketten verwendet. Ich fühle, dass mein idiomatischer Ansatz besser ist; jetzt, wo ich nicht auf dem Handy bin, kann ich es etwas besser aufräumen. – Makoto