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 :

comment utliser arraycopy()


Sujet :

avec Java

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    146
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 146
    Points : 69
    Points
    69
    Par défaut comment utliser arraycopy()
    Bonjour, je fait des test sur array copy pour mieux comprendre son fonctionnement

    je souhaite:

    1 - crée un tableau "remplir" qui contiendra 4 éléments
    2- crée un tableau "note" qui contiendre 3 éléments
    3- à l'aide du tableau note je récupère les 3 éléments et je les mets dans le tableau "remplir"

    4- j'aoute un élément en plus dans le tableau "remplir";

    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
     
    public class Test {
     
        public static void main(String[] args) {
        	int[] remplir = new int[4];
        	int[]note = new int[4];
        	note[0] =1;
        	note[1] =7;
        	note[2]= 10;
        	System.arraycopy(remplir, 0, note,0,3);
        	note[4]=99;
        	for(int i=0; i<=4; i++)
        	{
        		System.out.println(remlir[i]);
        	}
     
     
        }
    }
    peut t'on crée un tableau à 4 éléments dont la dernière case sera vide ?
    peut t'on ensuite remplire plus tard cette case vide ?

  2. #2
    Rédacteur/Modérateur
    Avatar de Logan Mauzaize
    Homme Profil pro
    Architecte technique
    Inscrit en
    Août 2005
    Messages
    2 894
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : Transports

    Informations forums :
    Inscription : Août 2005
    Messages : 2 894
    Points : 7 083
    Points
    7 083
    Par défaut
    Ca dépend de ce que tu entends par "vide".
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    // Créer un "tableau" sémantiquement vide, mais avec physiquement 4 éléments non déterminés
    ArrayList<Object> array = new ArrayList<Object>(4);
    // Le tableau contient sémantiquement 3 objets, mais physiquement le 4e existe et n'est pas défini (est vide ?)
    for (int i = 0; i < 3; i++) array.add(Integer.valueOf(i));

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    // Créer un "tableau" sémantiquement vide de 4 éléments
    Object[] array = new Object[4];
    // Le tableau contient sémantiquement 3 éléments, le 4e n'est pas défini (est vide ?)
    for (int i = 0; i < 3; i++) array[i] = Integer.valueOf(i);
    Java : Cours et tutoriels - FAQ - Java SE 8 API - Programmation concurrente
    Ceylon : Installation - Concepts de base - Typage - Appels et arguments

    ECM = Exemple(reproduit le problème) Complet (code compilable) Minimal (ne postez pas votre application !)
    Une solution vous convient ? N'oubliez pas le tag
    Signature par pitipoisson

  3. #3
    Expert confirmé
    Avatar de le y@m's
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2005
    Messages
    2 636
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Février 2005
    Messages : 2 636
    Points : 5 943
    Points
    5 943
    Par défaut
    Les tableaux ont une taille invariable qui est celle spécifiée lors de leur instanciation.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Object[] array1 = new Object[4]; // créé un tableau de taille 4
    int[] array2 = new int[5]; // créé un tableau de taille 5
    Ensuite il y a effectivement un problème avec la notion de "case vide". En effet, lors de l'instanciation d'un tableau, celui-ci est automatiquement rempli avec des valeurs par défaut. La valeur par défaut d'un objet est null mais pas pour les types primitifs.
    Les valeurs par défaut sont :
    • boolean : false
    • byte : 0
    • char : '\u0000'
    • short : 0
    • int : 0
    • long : 0L
    • float : 0.0F
    • double : 0.0
    • Object : null


    Donc s'il est facile de définir une "case vide" par la valeur null dans le cas d'objets, cela est plus difficile dans le cas d'un tableau de primitifs.

    Ainsi dans le code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    int[] note = new int[4];
    note[0] = 1;
    note[1] = 7;
    note[2] = 10;
    l'élément d'index 3 du tableau note vaut 0.

    Tu peux éventuellement utiliser les wrapper avec pour cet exemple un tableau d'Integer.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Integer[] note = new Integer[4];
    note[0] = 1;
    note[1] = 7;
    note[2] = 10;
    l'élément d'index 3 du tableau note vaut null.
    Je ne répondrai à aucune question technique par MP.

    Pensez aux Tutoriels et aux FAQs avant de poster (pour le java il y a aussi JavaSearch), n'oubliez pas non plus la fonction Rechercher.
    Enfin, quand une solution a été trouvée à votre problème
    pensez au tag

    Cours Dvp : http://ydisanto.developpez.com
    Blog : http://yann-disanto.blogspot.com/
    Page perso : http://yann-disanto.fr

  4. #4
    Membre chevronné
    Inscrit en
    Août 2009
    Messages
    1 073
    Détails du profil
    Informations forums :
    Inscription : Août 2009
    Messages : 1 073
    Points : 1 806
    Points
    1 806
    Par défaut
    Citation Envoyé par neufrdb Voir le message
    Bonjour, je fait des test sur array copy pour mieux comprendre son fonctionnement

    je souhaite:

    1 - crée un tableau "remplir" qui contiendra 4 éléments
    2- crée un tableau "note" qui contiendre 3 éléments
    3- à l'aide du tableau note je récupère les 3 éléments et je les mets dans le tableau "remplir"

    4- j'aoute un élément en plus dans le tableau "remplir";

    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
     
    public class Test {
     
        public static void main(String[] args) {
        	int[] remplir = new int[4];
        	int[]note = new int[4];
        	note[0] =1;
        	note[1] =7;
        	note[2]= 10;
        	System.arraycopy(remplir, 0, note,0,3);
        	note[4]=99;
        	for(int i=0; i<=4; i++)
        	{
        		System.out.println(remlir[i]);
        	}
     
     
        }
    }
    peut t'on crée un tableau à 4 éléments dont la dernière case sera vide ?
    peut t'on ensuite remplire plus tard cette case vide ?
    Sur le concept de la case vide, rien à ajouter par rapport à le y@m's. Par contre, niveau code, tu as a priori interverti tes 2 arrays dans ton code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    System.arraycopy(remplir, 0, note,0,3);
    Ceci copie 3 éléments de l'array remplir, en commençant à partir de l'index 0, dans l'array note (à partir de l'index 0 aussi).
    J'imagine que, vu que tu assignes des valeurs à note, et qu'après le arraycopie tu affiches les valeurs de remplir, tu souhaitais faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    System.arraycopy(note, 0, remplir,0,3);
    Et donc, en effet ça ne pose pas de problème de laisser une case "intouchée" par arraycopy.

Discussions similaires

  1. comment utliser SpagoBI Sdk
    Par toumaa dans le forum SpagoBI
    Réponses: 1
    Dernier message: 03/06/2014, 14h23
  2. comment exclure un numero pour utliser le RND
    Par abj8077 dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 13/10/2010, 12h59
  3. Réponses: 1
    Dernier message: 11/05/2010, 15h37
  4. comment utliser les requetes qui recoit plusieures données
    Par ouadie99 dans le forum Accès aux données
    Réponses: 3
    Dernier message: 14/03/2008, 16h38
  5. Comment utliser Python à patir du HTML ?
    Par Promeneur dans le forum Réseau/Web
    Réponses: 5
    Dernier message: 23/12/2005, 14h15

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