[java] break boucle depuis une autre méthode

Fermé
croc_odile - 18 nov. 2012 à 14:49
KX Messages postés 16734 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 24 avril 2024 - 18 nov. 2012 à 15:20
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

A voir également:

1 réponse

KX Messages postés 16734 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 24 avril 2024 3 015
18 nov. 2012 à 14:54
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.
0
est-ce-que tu peux etre un peu plus clair? quelle valeur particuliere pour le return? et je la récupere normalement ou non?
merci de ta réponse rapide
0
KX Messages postés 16734 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 24 avril 2024 3 015
18 nov. 2012 à 15:10
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.
0
le truc c'est qu'il ya des instructions qui s'effectuent avant le break de toute façon
0
KX Messages postés 16734 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 24 avril 2024 3 015
Modifié par KX le 18/11/2012 à 15:20
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 
       } 
   }
0