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

Langage Java Discussion :

Problème de copie de variable


Sujet :

Langage Java

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    26
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Décembre 2007
    Messages : 26
    Points : 24
    Points
    24
    Par défaut Problème de copie de variable
    Bonjour à tous et bonne année.
    Voila mon problème : dans une fonction récursive, je crée un tableau de booléen qui est la copie d'un autre.

    Pour cela je fais "boolean[][] tabTemp = tabBol;" tabBol étant le tableau original.

    Et voila le problème, quand je fais une modification sur tebTemp, elle se retrouve aussi sur tabBol.

    Comment faire pour ne modifier que tabTemp ?

    Merci d'avance

  2. #2
    Membre à l'essai
    Profil pro
    Étudiant
    Inscrit en
    Décembre 2007
    Messages
    23
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2007
    Messages : 23
    Points : 15
    Points
    15
    Par défaut
    remplis ton tabTemp avec un for

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    for(int i = 0; i<nbcolonnes; i++)
    {
        for(int j = 0; j<nbLignes; j++)
        {
             tabTemp[i][j] = tabBool[i][j];
        }
    }

  3. #3
    Membre averti Avatar de Amine_sas
    Profil pro
    Étudiant
    Inscrit en
    Juin 2005
    Messages
    245
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2005
    Messages : 245
    Points : 307
    Points
    307
    Par défaut
    Salut,
    L'instruction tabTemp = tabBol affecte l'adresse de tabBol à tabTemp, donc ils partagent le même tableau en mémoire.
    Pour créer une copie de tabBol, tu doit le faire à la main ou utilises la méthode statique arraycopy de la classe System comme suit:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    boolean[][] tabBol = new boolean[rows][cols];
    boolean[][] TmpBol = new boolean[rows][cols];
     
    for (int i = 0; i < rows; i++)
    {
       System.arraycopy(tabBol[i], tmpBol[i], 0, cols);
    }
    Attention: code non testé.
    "Un remboursement des programmes défectueux serait envisageable mais toute l'industrie du logiciel ferait faillite la première année." Andrew Tanenbaum.

  4. #4
    Membre à l'essai
    Profil pro
    Étudiant
    Inscrit en
    Décembre 2007
    Messages
    23
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2007
    Messages : 23
    Points : 15
    Points
    15
    Par défaut
    oulah, je savais meme pas qu'on avait le droit d'ecrire qu'une seule case, enfin la ca dépasse mon niveau de debutant ^^'
    enfin je pense que ce que j'ai mis c'est bon quand meme

  5. #5
    Membre averti Avatar de Amine_sas
    Profil pro
    Étudiant
    Inscrit en
    Juin 2005
    Messages
    245
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2005
    Messages : 245
    Points : 307
    Points
    307
    Par défaut
    Citation Envoyé par Mokette Voir le message
    oulah, je savais meme pas qu'on avait le droit d'ecrire qu'une seule case
    Oui parce qu'une matrice est un tableau de tableaux, donc mat[i] signifie un tableau contenant tous les éléments de la ligne i.

    enfin je pense que ce que j'ai mis c'est bon quand meme
    Oui sauf que je préfère i < lignes et j < colonnes
    "Un remboursement des programmes défectueux serait envisageable mais toute l'industrie du logiciel ferait faillite la première année." Andrew Tanenbaum.

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    26
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Décembre 2007
    Messages : 26
    Points : 24
    Points
    24
    Par défaut
    Ok merci beaucoup ça m'a vraiment aidé
    Et je confirme, les deux méthodes marchent

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

Discussions similaires

  1. Réponses: 13
    Dernier message: 14/09/2012, 23h51
  2. Problème copie de variable
    Par ArnaudCas dans le forum C++
    Réponses: 5
    Dernier message: 03/09/2012, 10h52
  3. Problème de copie de string dans string
    Par kazarn dans le forum SL & STL
    Réponses: 17
    Dernier message: 15/03/2005, 18h35
  4. [XSL]Problème de portée des variables
    Par djulesp dans le forum XSL/XSLT/XPATH
    Réponses: 6
    Dernier message: 17/09/2004, 10h34

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