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 :

fusion de trois tableaux de chaines de caractère


Sujet :

avec Java

  1. #1
    Membre du Club
    Inscrit en
    Avril 2007
    Messages
    120
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 120
    Points : 52
    Points
    52
    Par défaut fusion de trois tableaux de chaines de caractère
    bonjour à tous
    je propose de fusionner 3 tableaux de chaines de caractère:
    premier tableau: tabetab de taille listetab.size() rempli à partir d'un fichier xml
    deuxième tableau: tabetude de taille listetude.size() rempli à partir du même fichier xml
    premier tableau: tabdat1 de taille taille1 rempli à partir du même fichier xml
    j'ai fait ce code
    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
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
     
    tabFinal=new String[listEtab.size()+listEtude.size()+taille1];
    int min = Math.min(listEtab.size(),listEtude.size() );
    int min1 =Math.min(min,taille1);
     
    		int tfinal = listEtab.size() + listEtude.size()+taille1;
     
    int positionInFinal = 0;
    		// ici on copie les 2 tableaux en alternance
    		for (int i = 0; i < min1; i++) {
                if (tabetab[i]!=null)
                {tabFinal[positionInFinal++] = tabetab[i];}
                else {tabFinal[positionInFinal++]="";}
                if (tabetude[i]!=null)
                {tabFinal[positionInFinal++] = tabetude[i];}
                else {tabFinal[positionInFinal++]="";}
                if (tabdat1[i]!=null)
                {tabFinal[positionInFinal++]=tabdat1[i];}
                else {tabFinal[positionInFinal++]="";}
            }
    if (min1==listEtab.size()){
        for (int i = min; i < Math.min(listEtude.size(),taille1); i++) {
    			tabFinal[positionInFinal++] = "";
                if (tabetude[i]!=null)
                {tabFinal[positionInFinal++] = tabetude[i];}
                else {tabFinal[positionInFinal++]="";}
                if (tabdat1[i]!=null)
                {tabFinal[positionInFinal++]=tabdat1[i];}
                else {tabFinal[positionInFinal++]="";
    		}
     
     
    }
        if ((Math.min(listEtude.size(),taille1))==listEtude.size()){
        for (int i = listEtude.size(); i < tfinal; i++) {
    		tabFinal[positionInFinal++]="";
            tabFinal[positionInFinal++]="";
               if (tabdat1[i]!=null)
                {tabFinal[positionInFinal++]=tabdat1[i];}
                else {tabFinal[positionInFinal++]="";
    		}}
    }
    else{
       for (int i = taille1; i < tfinal; i++) {
    		tabFinal[positionInFinal++]="";
            if (tabetude[i]!=null)
                {tabFinal[positionInFinal++]=tabetude[i];}
                else {tabFinal[positionInFinal++]="";
    		}
            tabFinal[positionInFinal++]="";}
     
    }
    }
    if (min1==listEtude.size()){
        for (int i = min; i < Math.min(listEtab.size(),taille1); i++) {
    		if (tabetab[i]!=null)
                {tabFinal[positionInFinal++] = tabetab[i];}
                else {tabFinal[positionInFinal++]="";}
             tabFinal[positionInFinal++]="";
                if (tabdat1[i]!=null)
                {tabFinal[positionInFinal++]=tabdat1[i];}
                else {tabFinal[positionInFinal++]="";
    		}
     
     
    }
    if ((Math.min(listEtab.size(),taille1))==listEtab.size()){
        for (int i = listEtab.size(); i < tfinal; i++) {
    		tabFinal[positionInFinal++]="";
            tabFinal[positionInFinal++]="";
               if (tabdat1[i]!=null)
                {tabFinal[positionInFinal++]=tabdat1[i];}
                else {tabFinal[positionInFinal++]="";
    		}}
    }
    else{
       for (int i = taille1; i < tfinal; i++) {
    		if (tabetab[i]!=null)
                {tabFinal[positionInFinal++]=tabetab[i];}
                else {tabFinal[positionInFinal++]="";
    		}
           tabFinal[positionInFinal++]="";
     
            tabFinal[positionInFinal++]="";}
     
    }
     
    }
    if (min1==taille1){
        for (int i = min; i < Math.min(listEtab.size(),listEtude.size()); i++) {
    		if (tabetab[i]!=null)
                {tabFinal[positionInFinal++] = tabetab[i];}
                else {tabFinal[positionInFinal++]="";}
           if (tabetude[i]!=null)
                {tabFinal[positionInFinal++] = tabetude[i];}
                else {tabFinal[positionInFinal++]="";}
            tabFinal[positionInFinal++] = "";
     
     
    }
    if ((Math.min(listEtab.size(),listEtude.size()))==listEtab.size()){
        for (int i = listEtab.size(); i < tfinal; i++) {
    		tabFinal[positionInFinal++]="";
            if (tabetude[i]!=null)
                {tabFinal[positionInFinal++]=tabetude[i];}
                else {tabFinal[positionInFinal++]="";
    		}
            tabFinal[positionInFinal++]="";
               }
    }
    else{
       for (int i = listEtude.size(); i < tfinal; i++) {
    		if (tabetab[i]!=null)
                {tabFinal[positionInFinal++]=tabetab[i];}
                else {tabFinal[positionInFinal++]="";
    		}
           tabFinal[positionInFinal++]="";
     
            tabFinal[positionInFinal++]="";}
     
    }
    }
    quelque soit le fichier xml qui est en entrée ce code génère une exception
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException
    S'il vous plaît aidez moi à régler ce problème.
    Je compte sur vous.
    Cordialement

  2. #2
    Inactif  
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    885
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 885
    Points : 1 320
    Points
    1 320
    Par défaut
    Salut,

    avec tes indices, tu sorts de la capacité d'un tableau (indice trop grand ou négatif).
    Lances ton programme avec un debugger (si tu utilises un environnement de développement - par exemple NetBeans ou Eclipse, tu en as déjà un facile à utiliser), et tu comprendras pourquoi

    Une fois ton programme corrigé, tu pourras penser à une version plus simple : par exemple avec l'utilisation une collection comme variable de travail
    *graou* et même *graou*, ou encore *graou*

  3. #3
    Membre du Club
    Inscrit en
    Avril 2007
    Messages
    120
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 120
    Points : 52
    Points
    52
    Par défaut
    tu veux dire par lancer debugger c'est debug programme dans le menu debug??
    moi j'utilise netbeans si c'est ça je l'ai exécuté et la même exception se génère

  4. #4
    Inactif  
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    885
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 885
    Points : 1 320
    Points
    1 320
    Par défaut
    Oui, c'est bien celui-là.

    Donc, sous NetBeans (comme avec la plupart des environnements), tu vas devoir faire deux choses :

    - commencer par marquer des "points d'arrêt" : clic-gauche sur la marge à gauche, tu auras des carrés rouges~roses dans la marge, et les lignes surlignées de la même couleur.
    Cela veut dire qu'en mode debug, ton programme marquera une pause à ces endroits afin que tu examines l'état de tes variables. Ideal pour vérifier la valeur de tes compteurs, et donc voir à quelle ligne et à quel moment tu as un compteur qui veut aller trop loin.
    Tu pourras passer au point d'arrêt suivant avec la touche F5 (ou menu Debug / Continue).
    Mets les aux endroits stratégiques, et n'hésites pas à en mettre trois tonnes, c'est fait pour ça

    - une fois les points d'arrêt fixés, lances le debug via Ctrl+F5 s'il sagit de ton projet principal, sinon clic-droit sur ton projet (dans la vue "Projects" à gauche) et "Debug".
    Cela lancera ton programme avec le debuggeur, celui-ci parquant une pause à chaque point d'arrêt.
    Si tu tombes tout de suite sur ton exception, c'est que celle-ci est survenu avant même ton premier point d'arrêt
    *graou* et même *graou*, ou encore *graou*

Discussions similaires

  1. Réponses: 3
    Dernier message: 22/02/2014, 12h51
  2. Tableaux de chaines de caractères en C
    Par ensi_meriem dans le forum C
    Réponses: 7
    Dernier message: 11/05/2011, 16h06
  3. Problème tableaux de chaines de caractères
    Par florentv dans le forum Débuter
    Réponses: 2
    Dernier message: 01/11/2009, 17h05
  4. Réponses: 4
    Dernier message: 07/06/2007, 09h20
  5. [Tableaux] Interprétation chaine de caractères
    Par yAnSoLo82 dans le forum Langage
    Réponses: 7
    Dernier message: 27/10/2005, 09h18

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