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 :

méthode dans une méthode


Sujet :

avec Java

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Juillet 2019
    Messages
    49
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Juillet 2019
    Messages : 49
    Points : 29
    Points
    29
    Par défaut méthode dans une méthode
    bonjour;voici mon problème,je pensais avoir trouver un exo facile et je butte encore sur une pécadille
    code:
    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
    import java.util.Arrays;
    import java.util.Scanner;
     
    public class Paques {
    	static Scanner clavier = new Scanner(System.in);
     
    	public static void main(String[] args) {
    		//variable
    		int annee = 0;
    		int date = 0 ;
     
    		demanderAnnee();
    		System.out.println("Entrez un jour de (22 à 56) : ");
    		afficherDate(annee, date);
     
     
     
     
     
     
     
    	}
    	public static int demanderAnnee() {
    		//création des variables
    		int annee;
     
    		//verification de la date entrée
    		do {
    			System.out.println("Entrez une année (1583- 4000) :");
    			annee = clavier.nextInt();
    		}while(annee <= 1583 || annee >= 4000);
    		//si ok on retourne l'année
    		return annee;
    	}
    	public static void afficherDate(int annee, int date ) {
    		//déclaration variables
    		int date1 ;
    		int date2 ; 
    		annee = demanderAnnee();
    		//condition
    		if(date <=31) {
    			date1 = date;
    			System.out.println("Date de paques en "+annee + " : "+date1);
    		}
    		else if (date >= 32) {
    			date2 = date -31;
    			System.out.println("Date de paques en "+annee + " : "+date2);
    		}
     
    	}
    ma première méthode marche ,c est ok.
    par contre dans l énnonçé on me demande de créer une première méthode demanderAnnee et dans la deuxieme méthode "afficherDate "on me dit qu elle a 2 paramètres un entier pour l année et un entier pour la date et je dois afficher une réponse suivant la date entrez,jusqu'à la pas de problème,le soucis que je rencontre c'est mon premier paramètre année,je pense que c est le return de ""demanderAnnee" sinon à quoi sert elle ? donc si je me sert de "demanderAnnee"pour créer une variable année.j ai essayé de plaçer celle-ci dans le ""Date de paques en "+annee + " : "+date1" ,dans la méthode afficherDate,dans le main,j ai toujours :entrez une année de (1583 à 4000 ) ce que je conçois comme il est dans la méthode demanderAnnée.Mais je ne peux pas mettre ""entrez une année (1582-400)" dans la méthode main car il faut qu 'il soit dans la méthode "demanderAnnée,"d 'ou mon souci
    merci pour votre aiguillage..

  2. #2
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Salut,

    Ouh là là ! Ton explication est bien confuse... et toutes ces couleurs n'aident pas du tout (le vert sur blanc, c'est presque de l'encre invisible !).

    Commençons par "demanderAnnee". Tu as une méthode qui retourne un résultat : autant l'utiliser.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    public static void main(String[] args) {
     
        int annee = demanderAnnee(); // on demande une saisie de l'année et on la récupère dans une variable
        int date = 0 ; // à priori on devrait saisir ce nombre... dans une méthode probablement qui va faire System.out.println("Entrez un jour de (22 à 56) : ");
        afficherDate(annee, date); // puis on appelle la méthode d'affichage avec les variables stockant les valeurs saisie en paramètres
     
    }
    Tu n'as pas à remettre un appel de demanderAnnee dans la méthode afficherDate(). La méthode prend en paramètres les valeurs qu'elle a besoin pour fonctionner. Ces valeurs sont produites ailleurs, quelle qu'en soit la manière. Dans ton exercice c'est par saisie au clavier, donc on utilise les valeurs produites par des saisies au clavier qu'on passe en paramètres. La variable année est saisie par la méthode demanderAnnee. La deuxième variable date devrait être pareille, par saisie, à priori par une méthode dédiée... on ne te parle pas d'une seconde méthode de saisie dans l'énoncé ?
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Juillet 2019
    Messages
    49
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Juillet 2019
    Messages : 49
    Points : 29
    Points
    29
    Par défaut
    merci joêl pour ta réponse ,mais quoi que je fasse ,l'éxecution du code me redemande toujours "entrez une année (1583-4000)" ou que je mette ma variable ?
    declaration et initialisation de la variable année dans le main:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    	public static void main(String[] args) {
    		//variable
    		int date = 0 ;
    		int annee = demanderAnnee();
     
    		demanderAnnee();
    		System.out.println("Entrez un jour de (22 à 56) : ");
    		afficherDate(annee, date);
    résultat du code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Entrez une année (1583- 4000) :
    2000
    Entrez une année (1583- 4000) :
    2000
    Entrez un jour de (22 à 56) : 
    Date de paques en 2000 : 0

    La méthode main a un print :"entrez une annee(1583-4000)"on initialise la variable =>annee = demanderAnnee() = ici à 2000 pourquoi ça me remet "entrez une année (1583-4000)"alors que je suis bien dans l intervalle ?

    resultat si je ne suis pas dans l intervalle :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Entrez une année (1583- 4000) :
    5000
    Entrez une année (1583- 4000) :
    5000
    Entrez une année (1583- 4000) :
    5000
    Entrez une année (1583- 4000) :
    ce qui est logique .

  4. #4
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par cpiter Voir le message
    mais quoi que je fasse ,l'éxecution du code me redemande toujours "entrez une année (1583-4000)" ou que je mette ma variable ?
    Citation Envoyé par cpiter Voir le message
    La méthode main a un print :"entrez une annee(1583-4000)"on initialise la variable =>annee = demanderAnnee() = ici à 2000 pourquoi ça me remet "entrez une année (1583-4000)"alors que je suis bien dans l intervalle ?
    Bah, forcément tu appelles deux fois demanderAnnee :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    int annee = demanderAnnee(); // un premier appel
     
    demanderAnnee(); // un second appel
    A quoi sert le second appel ? Surtout que tu n'en récupères pas le résultat en plus. Supprimes ce second appel qui ne sert à rien en plus.
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  5. #5
    Nouveau membre du Club
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Juillet 2019
    Messages
    49
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Juillet 2019
    Messages : 49
    Points : 29
    Points
    29
    Par défaut
    oulala je pensais que quand on initialisait une variable avec une méthode on avait juste le retour de celle-ci et pas l interieur de celle-ci comme le print c'est pour cela que je la réécrivait une seconde fois merci joêlle pour ton aide ..

  6. #6
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par cpiter Voir le message
    je pensais que quand on initialisait une variable avec une méthode on avait juste le retour de celle-ci et pas l interieur de celle-ci comme le print c'est pour cela que je la réécrivait une seconde fois
    On récupère bien le retour de la méthode, mais pour avoir ce retour on exécute le code de cette méthode forcément, ce que tu appelles l'intérieur. C'est le principe des méthodes ou des fonctions ou procédures dans d'autres langages : l'appel de cette méthode qui provoque l'exécution de son code et la récupération éventuelle de résultats de cette exécution, de manière à ce qu'on puisse l'appeler plusieurs fois, ce code, et d'obtenir son résultat à différents endroits, avec éventuellement des paramètres différents, sans réécrire ce code plusieurs fois.
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

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

Discussions similaires

  1. passer la valeur d'un return dans une méthode
    Par belukrin dans le forum Langage
    Réponses: 1
    Dernier message: 25/03/2006, 06h58
  2. [Tkinter] Méthode get() dans une boucle while
    Par Thundie dans le forum Tkinter
    Réponses: 2
    Dernier message: 04/02/2006, 00h06
  3. instanciation problématique dans une méthode ActiveX
    Par mr.saucisse dans le forum MFC
    Réponses: 14
    Dernier message: 17/01/2006, 16h34
  4. [Applet] appel de la méthode stop() dans une applet
    Par ciol2.6.12 dans le forum Applets
    Réponses: 4
    Dernier message: 08/09/2005, 13h40
  5. Réponses: 2
    Dernier message: 15/11/2004, 15h12

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