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 :

Faire un swap


Sujet :

avec Java

  1. #1
    Membre régulier
    Inscrit en
    Décembre 2005
    Messages
    271
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 271
    Points : 91
    Points
    91
    Par défaut Faire un swap
    Bonjour,

    Ma question doit vous semblez tres simple mia spour moi elle l est beaucoup moins

    Je me demande juste comment faire une fonction swap en java avec des types primitifs puis des objets, dans un main

    Je n arrive pas a voir comment faire puisque la pile est effacé

    Voila je pense que ca vous posera pas de probleme et moi ca m aidera a comprendre un peu mieux le java

    Merci !

  2. #2
    Membre éprouvé

    Profil pro
    Inscrit en
    Mars 2002
    Messages
    652
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mars 2002
    Messages : 652
    Points : 1 151
    Points
    1 151
    Par défaut
    pour swapper a & b :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    a+=b;
    b = a - b;
    a-=b;
    non, sans rire (ça marche hein...) le plus simple est d'utiliser un tableau pour passer tes deux arguments. Attention cependant, il se peu que les références passées soient final donc !!!
    Clic me...
    CV en ligne

    Il y a 10 types de personnes, celui qui connait le binaire, et l'autre...

    Pas de réponse en MP...Merci

  3. #3
    Membre régulier
    Inscrit en
    Décembre 2005
    Messages
    271
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 271
    Points : 91
    Points
    91
    Par défaut
    oui mais si ces lignes sont dans une fonction , la pile est efface et les entiers a et b ne seront pas chnages dans le reste du programme non ?

  4. #4
    Membre éprouvé

    Profil pro
    Inscrit en
    Mars 2002
    Messages
    652
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mars 2002
    Messages : 652
    Points : 1 151
    Points
    1 151
    Par défaut
    d'ou l'obligation de les wrapper dans des objets
    Clic me...
    CV en ligne

    Il y a 10 types de personnes, celui qui connait le binaire, et l'autre...

    Pas de réponse en MP...Merci

  5. #5
    Membre régulier
    Inscrit en
    Décembre 2005
    Messages
    271
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 271
    Points : 91
    Points
    91
    Par défaut
    Donc :
    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
     
    void swap(Integer a, Integer b){
    <div style="margin-left:40px">Integer temp = new Integer();
    temp = b;
    b = a;
    a = temp;
    }
    </div>int a =10;
    int b =5;
    Integer c = new Integer(a);
    Integer d = new Integer(b);
    swap(c,d);
    a = Integer.intValue(c);
    b = INteger.intvalue(d);
    System.out.println("Valeur de a =" + a);
    Systeme.out.println("Valeur de b" + b);
    Avec ca je devrais obtenir valeur de a = 5 et valeur de b = 10 ?? Il faut utiliser les Wrapper car les objets sont apsses apr reference c est bien ca ?

  6. #6
    Membre éprouvé

    Profil pro
    Inscrit en
    Mars 2002
    Messages
    652
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mars 2002
    Messages : 652
    Points : 1 151
    Points
    1 151
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    {
       ...
       int[] tab = new int[a,b];
       swap(tab);
    }
     
    public void swap(int[] tab) {
       int c = tab[0];
       tab[0] = tab[1];
       tab[1] = c;
    }
    Clic me...
    CV en ligne

    Il y a 10 types de personnes, celui qui connait le binaire, et l'autre...

    Pas de réponse en MP...Merci

  7. #7
    Membre régulier
    Inscrit en
    Décembre 2005
    Messages
    271
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 271
    Points : 91
    Points
    91
    Par défaut
    Mais pourquoi est ce qu avec un tableau ca marche ? Et sans tableau est ce que ma methode amrche ?

    J ai vraiment du mal avec le Java , je prefere le c++....

  8. #8
    Membre éprouvé

    Profil pro
    Inscrit en
    Mars 2002
    Messages
    652
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mars 2002
    Messages : 652
    Points : 1 151
    Points
    1 151
    Par défaut
    Citation Envoyé par Treuze
    je prefere le c++....
    C'est ton choix, ça ce discute

    En Java, tous les primitifs passent par valeur et tous les objects passent par référence !
    Un tableau est considéré comme un objet !
    Clic me...
    CV en ligne

    Il y a 10 types de personnes, celui qui connait le binaire, et l'autre...

    Pas de réponse en MP...Merci

  9. #9
    Membre régulier
    Inscrit en
    Décembre 2005
    Messages
    271
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 271
    Points : 91
    Points
    91
    Par défaut
    Disons que j ai eu moins de mal avec les concepts de base du C++...

    Je vais retenir cet histoire de tableau , ca pourra aider

    Tu as oublie de me dire si ma methode marchait ...

  10. #10
    Membre éprouvé

    Profil pro
    Inscrit en
    Mars 2002
    Messages
    652
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mars 2002
    Messages : 652
    Points : 1 151
    Points
    1 151
    Par défaut
    Non, ta méthode ne fonctionne pas non plus

    Mais là, l'explication est beaucoup plus sioux...

    Les wrappers ainsi que la classe String sont des objets immuables !

    En fait, leur contenu ne peu pas changer, tu es obligé de créer une nouvelle instance et les références changent uniquement pour les paramètres du coup, pas pour l'appelant

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    int a =10;
    int b =5;
     
    int[] tab = {a,b};
    System.out.println(tab[0]+", "+tab[1]);
    swap(tab);
    System.out.println(tab[0]+", "+tab[1]);
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    public static void swap(int[] tab) {
      int c = tab[0];
      tab[0] = tab[1];
      tab[1] = c;
    }
    Tu ferais mieux de lire les cours et tutoriels pour apprendre Java : http://java.developpez.com/cours/
    Clic me...
    CV en ligne

    Il y a 10 types de personnes, celui qui connait le binaire, et l'autre...

    Pas de réponse en MP...Merci

  11. #11
    Membre régulier
    Inscrit en
    Décembre 2005
    Messages
    271
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 271
    Points : 91
    Points
    91
    Par défaut
    Je sens que je vais en ch*** avec ce langage...

    Merci pour ta reponse !

  12. #12
    Membre éprouvé

    Profil pro
    Inscrit en
    Mars 2002
    Messages
    652
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mars 2002
    Messages : 652
    Points : 1 151
    Points
    1 151
    Par défaut
    Question bête, il sert à quoi ton swap (à part inverser 2 valeurs) ?
    En fait, une API fait peut être ce que tu cherche à faire et comme tu semble débuter...

    Part toujours du principe que tout est déjà fait en java, reste à le trouver
    Clic me...
    CV en ligne

    Il y a 10 types de personnes, celui qui connait le binaire, et l'autre...

    Pas de réponse en MP...Merci

  13. #13
    Membre régulier
    Inscrit en
    Décembre 2005
    Messages
    271
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 271
    Points : 91
    Points
    91
    Par défaut
    Mon swap ne sert a rien c etait juste pour comprendre un peu mieux le fonctionnement du langage...

  14. #14
    Membre régulier
    Inscrit en
    Décembre 2005
    Messages
    271
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 271
    Points : 91
    Points
    91
    Par défaut
    Et pour faire un swap entre deux objets , est ce que c est aussi simple que ca ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    A a = new A();
    A b = new B();
     
    swap( a , b){
    <div style="margin-left:40px">c = new A();
    c = a;
    b = a;
    b = c;</div>}
     
     
    Est ce que les modifications seront prise en compte a l effacement de la pile ??

  15. #15
    Expert éminent sénior
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Points : 23 190
    Points
    23 190
    Billets dans le blog
    1
    Par défaut
    Salut,

    Cette méthode swap() ne peut pas marcher : en java lors d'un appel de méthode les références des objets sont passé par copie. Donc si tu les modifies dans la méthode swap() cela n'aura aucun impact sur les référencé passé dans la méthode appellante...

    a++

  16. #16
    Membre régulier
    Inscrit en
    Décembre 2005
    Messages
    271
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 271
    Points : 91
    Points
    91
    Par défaut
    Mais alors comment on fait ?

  17. #17
    Membre éprouvé

    Profil pro
    Inscrit en
    Mars 2002
    Messages
    652
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mars 2002
    Messages : 652
    Points : 1 151
    Points
    1 151
    Par défaut
    on fait pas ou on utilise un container (tableau, liste, objet avec 2 références)
    Clic me...
    CV en ligne

    Il y a 10 types de personnes, celui qui connait le binaire, et l'autre...

    Pas de réponse en MP...Merci

  18. #18
    Membre régulier
    Inscrit en
    Décembre 2005
    Messages
    271
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 271
    Points : 91
    Points
    91
    Par défaut
    ok merci !

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

Discussions similaires

  1. [ SWAP ] Peut-on en faire ce que nous voulons ?
    Par AlexCHU dans le forum Linux
    Réponses: 6
    Dernier message: 02/09/2011, 09h27
  2. faire un fichier .ini
    Par florent dans le forum C++Builder
    Réponses: 14
    Dernier message: 31/05/2002, 22h06
  3. faire un selection dans une image aves les APIs
    Par merahyazid dans le forum C++Builder
    Réponses: 3
    Dernier message: 30/04/2002, 10h44
  4. Comment faire pour créer un bitmap
    Par GliGli dans le forum C++Builder
    Réponses: 2
    Dernier message: 24/04/2002, 15h41

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