[java] break boucle depuis une autre méthode
croc_odile
-
KX Messages postés 19031 Statut Modérateur -
KX Messages postés 19031 Statut Modérateur -
Bonjour,
j'aimerais breaker une boucle depuis une autre méthode. Pour ce faire j'ai donné une étiquette i a la boucle en question et j'ai mis break i; dans mon autre méthode. Mais ça me marque en erreur : "the label i is missing"
Comment faire?
merci
j'aimerais breaker une boucle depuis une autre méthode. Pour ce faire j'ai donné une étiquette i a la boucle en question et j'ai mis break i; dans mon autre méthode. Mais ça me marque en erreur : "the label i is missing"
Comment faire?
merci
1 réponse
-
Tu ne peux pas, faire un break à partir d'une autre méthode, il faut d'abord que tu quittes la méthode en donnant une valeur particulière au return, et tu récupères cette valeur dans la boucle pour faire le break.
-
-
Ta méthode renvoie déjà surement un résultat (s'il n'y a pas besoin de faire un break) donc il faut déterminer une valeur que ta méthode ne pourra pas renvoyer en situation normale, mais qu'elle ne renverra que dans le cas particulier où il faut faire un break. Par exemple, si tu renvoies des entiers positifs, la valeur particulière peut-être -1 comme ça quand tu regardes le résultat de la méthode avec if, si c'est égal à -1 tu fais un break, sinon tu traites le résultat normalement.
On pourrait aussi utiliser une exception, et faire un try/catch autour de la méthode pour récupérer l'exception, on saura que si cette exception est levée il faut faire un break, sinon on continue le traitement normal de la boucle. -
-
ce n'est pas un problème, les instructions s'effectueront normalement jusqu'au break actuel sauf que tu vas le remplacer par un return, ou un throw qui serait peut-être mieux...
public class BreakException extends Exception {} public void maMethode(int i) throws BreakException { // instructions à effectuer avant //break i; // on enlève cette instruction throw new BreakException() // on la remplace par ça // instructions à effectuer après (si on n'a pas fait le break) } i: for (int i=0; i<5; i++) { try { // instructions à effectuer avant maMethode(i); // instructions à effectuer après (si on n'a pas fait le break) } catch (BreakException e) { break i; // cette ici que l'instruction apparaît } }
-