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

Collection et Stream Java Discussion :

Affectation d'un tableau


Sujet :

Collection et Stream Java

  1. #1
    Membre confirmé
    Inscrit en
    Avril 2008
    Messages
    125
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 125
    Par défaut Affectation d'un tableau
    Salut


    Je suis besoin de la fonction suivante pour mon projet qui affecte les élement du tableau 2 dans tableau 1 , mais ca marche pas je veux qu'il fait ca par exemple pour t1={1,0,1,0,0,1,0} et t2={0,1,1,0} il me retourne {0,1,1,0}, mais la fonction que j'ai écrit il me retourne {0,1,1,0,0,1,0}.
    Si vous avez une idé pour m'aidé c'est gentil de votre part .




    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    public static int [] affect(int[] t1,int[] t2)
    	 {
    		int temp=0;
    		for(int i=0;i<t2.length;i++)
    		{
     
    			t1[i]=temp;
    			temp=t2[i];
    			t1[i]=t2[i];
    		}
     
    		return t1;
    	 }

    merci d'avance

  2. #2
    Membre expérimenté Avatar de Tux++
    Étudiant
    Inscrit en
    Avril 2008
    Messages
    281
    Détails du profil
    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2008
    Messages : 281
    Par défaut
    bonjour,

    c'est normal vu que t2 est plus petit que t1 etu tu t'arrêtes à la longueur de t2

    pour changer ça tu peux rajouter:

    t1 = new int[t2.length()];

    par exemple


    par contre je ne comprends pas trop l'utilité de temp?

  3. #3
    Membre expérimenté
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 152
    Par défaut
    Citation Envoyé par Tux++ Voir le message
    Par contre je ne comprends pas trop l'utilité de temp?
    Moi c'est l'intérêt du truc que je ne comprends pas
    Je n'ai peut-être pas compris ce que tu voulais faire, mais d'après ce que j'ai compris il y a 2 solutions "vachement" plus simple:

    Si tu veux que t1 soit une copie de t2 (t1 et t2 pointent vers la même référence, donc toute modification sur t1 ou t2 sera répércutée sur l'autre)
    Si tu veux que t1 ait les valeurs de t2 mais avec une autre référence
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    System.arraycopy(t2, 0, t1, 0, t2.length);
    A noter que tu nepeux pas changer la dimension d'un tableau. Dès que tu crées une instance, a taille est définitive jusqu'à la destruction de l'objet.

  4. #4
    Invité
    Invité(e)
    Par défaut
    Si tu veux que t1 ait les valeurs de t2 mais avec une autre référence
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    System.arraycopy(t2, 0, t1, 0, t2.length);
    A noter que tu nepeux pas changer la dimension d'un tableau. Dès que tu crées une instance, a taille est définitive jusqu'à la destruction de l'objet.
    Il me semble que ça ne marche pas ça. il va recopier les valeurs de t2 certes mais il ne réalloue pas t1, il va juste changer les premières valeurs de t1 avec celles de t2, si on en croit la doc et le test suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    int[] t1 = { 1, 0, 1, 0, 0, 1, 0 };
    int[] t2 = { 0, 1, 1, 0 };
     
    System.arraycopy(t2, 0, t1, 0, t2.length);
     
    for (int i = 0; i < t1.length; i++) {
    	System.out.print(t1[i] + " ");
    }
    qui a pour résultat :
    [edit]faute de frappe[/edit]

  5. #5
    Membre expérimenté
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 152
    Par défaut
    C'est exactement ca, c'est pour ca que j'ai écris

    A noter que tu ne peux pas changer la dimension d'un tableau. Dès que tu crées une instance, la taille est définitive jusqu'à la destruction de l'objet.
    Donc impossible d'augmenter ou de réduire. Dans ce cas, il faut utiliser un Vector ou une ArrayList.

  6. #6
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par @Ikey Voir le message
    C'est exactement ca, c'est pour ca que j'ai écris



    Donc impossible d'augmenter ou de réduire. Dans ce cas, il faut utiliser un Vector ou une ArrayList.
    Ce que je voulais dire c'est que malgré cette remarque, cette solution ne répond pas à sa demande, c'est tout. Pour faire une copie de tableau dans une autre instance on peut faire ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    public static int[] copy(int[] tableau) {
        int[] resultat = new int[tableau.length];
        for(int i = 0; i < tableau.length; i++) {
            resultat[i] = tableau[i];
        }
        return resultat;
    }
    Après je ne sais pas si c'est ce que voulait alouha

  7. #7
    Membre expérimenté
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 152
    Par défaut
    Je parlais juste de son code, au final je peux faire la même chose que toi, en moins de lignes et donc en plus joli (sauf le nom des variables, mais ce n'est pas moi qui les ait choisi) :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    public static int[] copy(int[] t2) {
        int[] t1 = new int[t2.length];
        System.arraycopy(t2, 0, t1, 0, t2.length);
     
        return t1;
    }
    Mais vu qu'il souhaite avoir les 2 tableaux en paramètre ca ne change rien.
    La seule réponse c'est que ce n'est pas possible

  8. #8
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par @Ikey Voir le message
    Je parlais juste de son code, au final je peux faire la même chose que toi, en moins de ligne et donc en plus joli (sauf les noms de variables, mais ce n'est pas moi qui les ait choisi) :
    moins de ligne => plus joli
    Permets moi de ne pas être d'accord du tout, mais bon... Ceci dit écrire la copie du tableau sois même demande pas trop d'efforts et pis spas trop moche...

  9. #9
    Membre expérimenté
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 152
    Par défaut
    Si tu peux faire quelque chose d'aussi bien, voire mieux en moins de ligne de code, pour toi ce n'est pas plus joli, techniquement parlant? Ton ingé qualité doit souvent faire la gueule.

    De plus arraycopy est une méthode native donc plus performant que ta boucle

  10. #10
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par @Ikey Voir le message
    Si tu peux faire quelque chose d'aussi bien, voire mieux en moins de ligne de code, pour toi ce n'est pas plus joli, techniquement parlant? Ton ingé qualité doit souvent faire la gueule.

    De plus arraycopy est une méthode native donc plus performant que ta boucle
    Pour arrayCopy d'accord c'est plus rapide que ma boucle.

    Mais pourquoi tu sors tout de suite des grands mots ? Pour faire classe ? Tu dis, je cite, "au final je peux faire la même chose que toi, en moins de ligne et donc en plus joli ", je réponds "pas d'accord", car ta généralité me semble fausse.
    Un code sur moins de ligne peut devenir illisible dans certains cas, je trouve et donc beaucoup plus dur à maintenir. Au final je sais pas où se retrouve "l'ingé qualité" à choisir entre les deux. Des algo utilisent des astuces jolies techniquement ne font pas forcément du code plus joli en règle générale, sauf si tu bosses dans l'embarqué où chaque ligne de code doit être suroptimisée...
    Ceci dit je sens que ta solution est une fois de plus la meilleure donc je préfère arrêter ici cette discussion...

  11. #11
    Membre confirmé
    Inscrit en
    Avril 2008
    Messages
    125
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 125
    Par défaut
    salut

    Mon interet et que finalement t1 contient les élement du t2 avec meme longueur ce dernier, mais puisque vous n'avez pas de solution de ca je voi que peut etre je peut pas faire ca

  12. #12
    Membre expérimenté
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 152
    Par défaut
    Tu n'as pas besoin de t'énerver, et ce n'était pas le but de ma remarque.

    Je dis juste qu'il existe des outils et qu'il faut prendre l'habitude de les utiliser.
    Ca ne sert à rien de réinventer la roue à chaque fois quand dans gars sont passer avant.

    Ceci était un exemple simple, mais avec ton raisonnement on peut totalement se passer d'une API ou d'un framework puisque on peut arriver au même résultat. Pourtant ca arrive rarement. Personne n'est assez fou pour se lancer dans un projet "from scratch".
    C'est tout ce que je dis

  13. #13
    Membre confirmé
    Inscrit en
    Avril 2008
    Messages
    125
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 125
    Par défaut
    Citation Envoyé par Tux++ Voir le message
    bonjour,

    c'est normal vu que t2 est plus petit que t1 etu tu t'arrêtes à la longueur de t2

    pour changer ça tu peux rajouter:

    t1 = new int[t2.length()];

    par exemple


    par contre je ne comprends pas trop l'utilité de temp?
    j'ai étulisé temp pour changé les valeur

  14. #14
    Membre expérimenté Avatar de Tux++
    Étudiant
    Inscrit en
    Avril 2008
    Messages
    281
    Détails du profil
    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2008
    Messages : 281
    Par défaut
    temp ne sert strictement à rien ici


    pour ce que tu veux faire les réponses ont été données plus haut


    Pour ce qui est de la discussion sur la taille du code, ce n'est pas le sujet ici mais en effet, réduire la taille du code peut mener à des problèmes de lisibilité (ex: abréviation du if en ? mais bon dans un autre contexte si c'est réudire du code inutile alors oui

  15. #15
    Membre confirmé
    Inscrit en
    Avril 2008
    Messages
    125
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 125
    Par défaut
    Salut

    merci mes amies a l'aide de vos réponse j'ai réalisé finalment ce que je veut encore merci

Discussions similaires

  1. Réponses: 3
    Dernier message: 20/07/2009, 12h37
  2. problème affectation d'un tableau de char
    Par midotek dans le forum Collection et Stream
    Réponses: 5
    Dernier message: 07/12/2008, 22h50
  3. Affectation d'un tableau
    Par rico3434 dans le forum Débuter
    Réponses: 1
    Dernier message: 19/11/2007, 17h42
  4. Affectation dans un tableau d'objet
    Par kheiro dans le forum Collection et Stream
    Réponses: 2
    Dernier message: 30/08/2007, 13h13
  5. affectation sur un tableau dynamique
    Par oranoutan dans le forum C
    Réponses: 35
    Dernier message: 27/06/2007, 01h16

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