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

Java Discussion :

Passage de paramètres par adresse en Java


Sujet :

Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre très actif
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2011
    Messages
    338
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2011
    Messages : 338
    Par défaut Passage de paramètres par adresse en Java
    salut!
    Je cherche une reponse au problème de passage de paramètres par adresse en java !
    par exemple, je veux faire une procédure qui fait la permutation de deux entiers (j'ai essayé avec int et Integer mais ça marche pas ) voila le code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    static void permut(Integer n1,Integer n2)
    {Intger t;
    t=n1;
    n1=n2;
    n2=t;
    }

  2. #2
    Membre confirmé
    Homme Profil pro
    Etudiant
    Inscrit en
    Septembre 2012
    Messages
    69
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Eure et Loir (Centre)

    Informations professionnelles :
    Activité : Etudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2012
    Messages : 69
    Par défaut
    Salut,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    void permut (int n1, int n2)
    {
         int t;
         t = n1;
         n1 = n2;
         n2 = t;
    }
    ne fonctionne pas ?


    EDIT: autant pour moi, tu veux que n1 devienne n2 peut être
    En java ce n'est pas possible (corriger moi si je me trompe) de passer par référence des types primitifs.
    Seul les objets sont référencés.

  3. #3
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 582
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 582
    Par défaut
    Bonjour,

    cela n'existe pas. Pas de paramètre par adresse en Java.
    Il existe de nombreuses solutions de contournement, qui font que ce n'est pas un problème, toute la question est de décider laquelle. Et cela dépend de ce que tu as vraiment besoin de faire.

    Dans le monde réel on a jamais besoin, en Java, d'une méthode comme cette "permut()". Essaie, tu verras : elle ne sert à rien.
    Pour te donner une bonne solution, tu vas donc devoir donner un bon exemple.

    Un exemple quand même : quand on a vraiment besoin d'intervertir deux éléments, ça veut dire que ces éléments sont contenus dans une structure où la position compte, comme un tableau, une List, une Map ou ce genre de chose.
    Permuter deux éléments dans une telle structure est trivial, j'espère que tu sauras faire tout seul !

    Citation Envoyé par lr.remy Voir le message
    Seul les objets sont référencés.
    Et cela ne résout pas le problème posé, puisque assigner une nouvelle référence à une variable qui contenait une référence, n'a pas d'effet sur l'ancienne référence.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  4. #4
    Membre très actif
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2011
    Messages
    338
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2011
    Messages : 338
    Par défaut
    Integer est un objet ! non ?
    sinon existe t'il une solution sans utiliser les tableaux ou les listes (sans utilisation de fonctions mais plutôt de procédures) ?

  5. #5
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 582
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 582
    Par défaut
    Citation Envoyé par mohsenuss91 Voir le message
    Integer est un objet ! non ?
    Oui. Et comme je l'ai dit, ça ne change absolument rien au problème.

    Citation Envoyé par mohsenuss91 Voir le message
    sinon existe t'il une solution sans utiliser les tableaux ou les listes (sans utilisation de fonctions mais plutôt de procédures) ?
    Il y a plein de solutions. Je te le demande pour la deuxième fois : c'est pour faire quoi ?
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  6. #6
    Membre très actif
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2011
    Messages
    338
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2011
    Messages : 338
    Par défaut
    Citation Envoyé par thelvin Voir le message
    Oui. Et comme je l'ai dit, ça ne change absolument rien au problème.



    Il y a plein de solutions. Je te le demande pour la deuxième fois : c'est pour faire quoi ?
    J'ai besoin de cette procédure pour faire la permutation de deux entiers qui se trouvent dans un tableau (donc je travail avec les indices et pour faciliter le travail j'ai besoin de cette procédure).

  7. #7
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 582
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 582
    Par défaut
    Citation Envoyé par mohsenuss91 Voir le message
    pour faciliter le travail j'ai besoin de cette procédure
    Pas le moins du monde.
    Permuter deux éléments d'un tableau est parfaitement trivial.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    static <T> void permut(T[] tab, int index1, int index2) {
      T temp = tab[index1];
      tab[index1] = tab[index2];
      tab[index2] = temp;
    }
    Ce serait plus compliqué si nous parlions, par exemple, d'une LinkedList. Dans ce cas-là la solution serait de ne pas le faire, et utiliser une ArrayList à la place d'une LinkedList.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

Discussions similaires

  1. [c] passage de paramètres par adresse
    Par Ashin dans le forum C
    Réponses: 11
    Dernier message: 25/03/2008, 17h36
  2. Réponses: 3
    Dernier message: 29/06/2007, 17h18
  3. Passage de paramètres par adresse
    Par Irish dans le forum ASP.NET
    Réponses: 2
    Dernier message: 27/02/2007, 17h39
  4. Passage de paramètre par adresse, pointeur
    Par spileo dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 19/01/2007, 19h00
  5. Réponses: 19
    Dernier message: 09/06/2006, 10h03

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