Partage
  • Partager sur Facebook
  • Partager sur Twitter

Fonction récursive ...

Sujet résolu
    15 juillet 2011 à 10:53:47

    Les fonctions récursive ... sous ce titre barbare, ce cache une question plus subtile.
    voilà, je voudrais faire une fonction qui demande d'entrer un texte.
    Si rien n'est entré ou si ce qui est entré n'est pas valide, je voudrais réa-ficher la boite de dialogue jusqu'à ce que l'utilisateur entre quelque chose de correcte.
    Bon, j'ai déjà fait une fonction comme ça en utilisant la récursivité, seulement, c'était une fonction de type "void" ...
    Or, maintenant, ma fonction devra renvoyer un String ...
    Vous comprenez l'intérêt je crois, j'appelle la fonction, et cette fonction se charge de forcer l'utilisateur à entrer quelque chose de valide, puis à renvoyé le résultat ...
    Seulement, essayez de faire de la récursivité quand la fonction n'est pas en void !
    Voici un exemple :
    public String askNewString(String ask, String title){
    		name = jop.showInputDialog(ask);
    		if(name!=null){
    			return name;
    		}else{
    			askNewString(ask, title);
    			
    		}
    	}
    

    Mais ça va pas, ça fait une erreur de compilation ... si je fait return null;, la boite ne se ré affiche pas ...

    Donc voilà, ma question, c'est comment utiliser la récursivité dans une fonction qui n'est pas de type void ...

    PS

    En attendant, je cherche un autre moyen que la récursivité pour mon pb ;)
    Merci.

    EDIT

    ok, j'ai fait ça :

    public String askNewString(String ask){
    		name = null;
    		while(name==null||name.equals("")){
    			name = jop.showInputDialog(ask);
    		}
    		return name;
    		
    	}
    


    Je me demande si dans mon précédent code, ce n'était pas parce que j'avais oublier la confition .equals(""); .. je regarde tout de suite.


    EDIT EDIT

    en effet, ce code marche, désolé pour le dérangement :honte:

    public String askNewString(String ask){
    		name = jop.showInputDialog(ask);
    		if(name!=null&&!name.equals("")){
    			return name;
    		}else{
    			askNewString(ask);
    			return null;
    		}
    	}
    


    mais ... es-ce que ce return null; est très académique ... il n'y a pas une façon mieux de la faire.
    En tout cas, je pense que la méthode utilisant le while doit être plus performante ...
    • Partager sur Facebook
    • Partager sur Twitter
      15 juillet 2011 à 11:17:17

      Utilise une boucle ça ira très bien. La récursivité n'est pas vraiment adaptée ici.
      • Partager sur Facebook
      • Partager sur Twitter
        15 juillet 2011 à 11:20:37

        oui, c'est vrai, à moins que l'on ne puisse pas tester toutes les conditions en une ligne ... ce qui était le cas pour mon premier cas (la fonction de type void), où il fallait faire une requête etc. (c'était pour une connexion).
        Merci bien.
        • Partager sur Facebook
        • Partager sur Twitter
          15 juillet 2011 à 11:27:22

          T'as juste oublié le return :

          public String askNewString(String ask){
          		name = jop.showInputDialog(ask);
          		if(name!=null&&!name.equals("")){
          			return name;
          		}else{
          			return askNewString(ask);
          			
          		}
          	}
          
          • Partager sur Facebook
          • Partager sur Twitter

          Fonction récursive ...

          × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
          × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
          • Editeur
          • Markdown