IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

avec Java Discussion :

Récupération de valeur en fin de méthode.


Sujet :

avec Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    10
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Novembre 2009
    Messages : 10
    Par défaut Récupération de valeur en fin de méthode.
    Bonjour à tous,

    Je suis en train de travailler sur un petit programme très simple en mode console. Dans celui-ci, j'ai crée des méthodes (sur le même fichier source que la méthode main donc) me permettant d'effectuer une opération. J'aurai voulu simplement savoir comment je pouvais récupérer le résultat de cette opération.

    Dans le même domaine, j'aurai voulu savoir comment récupérer un temps par la même occasion, car l'opération en question est chronomètrée.

    Un grand merci à celui ou celle qui pourra me venir en aide.

    Cordialement.

    Java_doc

  2. #2
    Membre expérimenté
    Homme Profil pro
    Analyst
    Inscrit en
    Juillet 2008
    Messages
    150
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Analyst
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2008
    Messages : 150
    Par défaut
    Bonjour,
    Je ne suis sur d'avoir compris la 1ere question (peux-tu commenter avec un exemple).
    Pour "chronometrer" le temps d'une fonction, dans le main :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    long t1=System.currentTimeMillis() ;
    String rep= Operation1();
    t1=System.currentTimeMillis() -t1;
    System.out.println("L'operation 1 a mis "+t1+" ms et a renvoyé la valeur :"+rep+".");
    Cordialement

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    47
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 47
    Par défaut
    Coucou,
    Pour récupérer le résultat d'une opération dans une méthode, type ta méthode, et renvoie le résultat avec le mot clé "return". Comme ça, tu pourra le récupérer directement dans une variable, par exemple.

    Par exemple, si ton résultat est de type integer :

    Code JAVA : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    public int maMethode(){
     
    //Traitements 
     
    return tonResultat;
     
    }

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    10
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Novembre 2009
    Messages : 10
    Par défaut
    Bonjour,

    Merci à vous deux pour ces réponses, mais je vais essayer de reformuler ma question car c'est vrai que je n'ai pas été très clair:

    J'ai copié une partie de mon code pour illustrer un peu tout ça:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    import java.util.Scanner;
     
    public class Test {
     
         // Méthode level_1 : premier niveau de difficulté
        public static boolean level_1 () {
     
            byte nbr1, nbr2 = 0;
            // initialisation du "chrono".
            long start = System.nanoTime();
            long second = 0;
            long somme = 0;
            boolean resultat = false;
     
            Scanner valeurEntree = new Scanner(System.in);
     
            // Génération de deux nombres entiers aléatoires
            nbr1 = (byte) (Math.random() * -128 + 127);
            nbr2 = (byte) (Math.random() * -128 + 127);
     
            System.out.printf("\tCombien font %3d + %3d ? ", nbr1, nbr2);
            somme = valeurEntree.nextInt();
     
            // Arrêt du chrono.
            long nsecond = System.nanoTime() - start;
            // Transformation des nano secondes en secondes.
            second = nsecond / 1000000000;
     
            if (somme == nbr1 + nbr2) {
                resultat = true;
            }else{
                resultat = false;
            }
     
            return resultat;
     
        }
     
        // Méthode principale
        public static void main (String [] args) {
     
            System.out.println("Début - Exécution Test.java\n");
     
            byte ind_niv = 1;
     
            // Boucle pour répéter l'opération tant que le niveau 5 n'est pas atteint.
            while (ind_niv <= 5) {    
                    // Evolution du niveau de difficulté en fonction des réponses
                    switch (ind_niv) {
                        case 1:
                            level_1 ();
                            break;
                        // J'ai effacé les autres niveaux par soucis de clarté...imaginer la même chose jusque 5.
                        default:
                            break;
     
                    }
                    // Affichage du résultat de la méthode addition 
                    System.out.print(resultat);
     
                        // Condition pour l'affichage d'un message en fonction de la réponse et incrémentation du niveau.
                        if (resultat = true) {
                            System.out.println("Gagné !!");
                            ind_niv++;
                        }else{
                            System.out.println("Perdu...");
                        }
                        }
                    System.out.println("\nFin - Exécution Test.java");
                }
            }
    Voilà, j'ai donc une méthode main qui ressemble un peu à ça et une methode level_1 qui est appelée si la variable ind_niv = 1. J'aurai donc voulu savoir comment je devais m'y prendre pour récupérer la valeur de la variable resultat dans la methode main pour pouvoir afficher mon message...

    Si on regarde de plus près la méthode level_1 maintenant, on voit qu'un chronomètre a été mis en place pour mesurer le temps de réponse de l'utilisateur... comment récupérer la valeur de ce temps dans la méthode main?

    Merci.

    Java_doc

  5. #5
    Rédacteur

    Avatar de ok.Idriss
    Homme Profil pro
    IS Consultant
    Inscrit en
    Février 2009
    Messages
    5 220
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : IS Consultant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2009
    Messages : 5 220
    Par défaut
    Bonjour.

    Une méthode qui n'est pas de type void est préfixée par un type qui est celui du résultat que l'on retourne. Elle peut aussi prendre en compte aucun, un ou plusieurs paramètres de types différents (entre les parenthèses).

    Je vais te donner un petit exemple pour comprendre, une méthode retournant un int (qui est le carrée d'un int en paramètre) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    static public int carree (int nb)
    {
      return nb*nb;
    }
    Cette fonction peut s'écrire aussi :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    static public int carree (int nb)
    {
      int resultat = nb * nb;
      return resultat;
    }
    Après tu n'auras plus qu'à faire variable = carre (variable); pour élever une variable au carrée dans main. Tu peut aussi faire variable1 = carree (variable2); (ici, variable1 sera égale au carrée de variable2) ou encore variable = carree (2); (ici, variable sera égale au carrée de 2, c'est à dire 4) tant que le paramètre reste un int.

    Quant aux méthodes de type void, elles ne renvoient aucune valeur ... il me semble qu'on les appelles procédures, un exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    static public void carree (int nb)
    {
       System.out.println ("le carré de " + nb + " est " + nb*nb);
    }
    Cette fois, il suffira de faire carree (nb); dans ton main (avec nb, une variable ou expression de type int quelconque).

    C'est plus clair avec ces exemples ?

  6. #6
    Membre expérimenté
    Homme Profil pro
    Analyst
    Inscrit en
    Juillet 2008
    Messages
    150
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Analyst
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2008
    Messages : 150
    Par défaut Réponse sur 1 parametre
    Il y'a quelques erreurs dans ton main:
    1)La variable resultat n'est pas déclarée.(et il faut l'initialiser)
    2)Il affiche toujours "Gagné":
    = affecte la valeur. Tu peux utiliser :
    Ou alors:
    Ce qui donne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
     
    public static void main (String [] args) {
     
    	System.out.println("Début - Exécution Test.java\n");
     
    	byte ind_niv = 1;
    	boolean resultat;
    	// Boucle pour répéter l'opération tant que le niveau 5 n'est pas atteint.
    	while (ind_niv <= 5) {    
    		// Evolution du niveau de difficulté en fonction des réponses
    		resultat=false;//
    		switch (ind_niv) {
    		case 1:
    			resultat=level_1 ();
    			break;
    			// J'ai effacé les autres niveaux par soucis de clarté...imaginer la même chose jusque 5.
    		default:
    			break;
     
    		}
    		// Affichage du résultat de la méthode addition 
    		System.out.print(resultat);
     
    		// Condition pour l'affichage d'un message en fonction de la réponse et incrémentation du niveau.
    		if (resultat ) {
    			System.out.println("Gagné !!");
    			ind_niv++;
    		}else{
    			System.out.println("Perdu...");
    		}
    	}
    	System.out.println("\nFin - Exécution Test.java");
    }

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 0
    Dernier message: 30/11/2013, 21h56
  2. [checkbox] Récupération des valeurs de checkbox
    Par chng001 dans le forum Struts 1
    Réponses: 13
    Dernier message: 07/09/2009, 20h31
  3. [struts] [checkbox] récupération des valeurs cochées
    Par abourell dans le forum Struts 1
    Réponses: 16
    Dernier message: 10/06/2005, 20h58
  4. récupération de valeur de lien
    Par sex-sansbol dans le forum ASP
    Réponses: 3
    Dernier message: 07/06/2004, 10h43
  5. Récupération de valeurs d'un tableau
    Par leeloo076 dans le forum ASP
    Réponses: 12
    Dernier message: 25/03/2004, 10h59

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo