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 :

Probleme d'exception ArrayIndexOutOfBoundsException


Sujet :

avec Java

  1. #1
    Membre averti
    Inscrit en
    Mars 2008
    Messages
    35
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 35
    Par défaut Probleme d'exception ArrayIndexOutOfBoundsException
    Bonjour,
    comme vous pouvez le constatez il est trés tard et ça fait plus de 4 heures que je me casse la tête avec mon @# de programme en java.
    Le probléme que j'ai c'est surtout avec les bloc try et catch,je ne sais pas ou les mettre et je crois que c est l origine de mon probleme,le deuxieme probleme c'est que j ai codé au kilometre et donc ce n'est pas tres clair.

    Par contre lorsque j'excecute la deuxieme partie de mon programme ca fonctionne tres bien sans aucun message d'erreur.

    Je vous explique vaguement ce que fait ce programme.
    Il lit un premier fichier (X),qu'il transforme en X2 puis il lit un deuxiemen fichier X3,à partir de X2(le fichier transformé ) et X3 il crée un nouveau fichier!!

    En fait,le programme marche parfaitement quand je saute l'etape 1 c est a dire quand j utilise un fichier deja present X2,donc je suis sure que ca bloque au début.

    Voila mon code(désolé je sais que c est 300 lignes,mais j ai mis le max de commentaire)
    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
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    192
    193
    194
    195
    196
    197
    198
    199
    200
    201
    202
    203
    204
    205
    206
    207
    208
    209
    210
    211
    212
    213
    214
    215
    216
    217
    218
    219
    220
    221
    222
    223
    224
    225
    226
    227
    228
    229
    230
    231
    232
    233
    234
    235
    236
    237
    238
    239
    240
    241
    242
    243
    244
    245
    246
    247
    248
    249
    250
    251
    252
    253
    254
    255
    256
    257
    258
    259
    260
    261
    262
    263
    264
    265
    266
    267
    268
    269
    270
    271
    272
    273
    274
    275
    276
    277
    278
    279
    280
    281
    282
    283
    284
    285
    286
    287
    288
    289
    290
    291
    292
    293
    294
    295
    296
    297
    298
    299
    300
    301
    302
    303
    304
    305
    306
    307
    308
    309
    310
    311
    312
    313
    314
    315
    316
    317
    318
    319
    320
    321
    322
    323
    324
    325
    326
    327
    328
    329
    330
    331
    332
    333
    334
    335
    336
    337
    338
    339
    340
    341
    342
    343
    344
    345
    346
    347
    348
    349
    350
    351
    352
    353
    354
    355
    356
    357
    358
    359
    360
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import java.io.*;
     
    import javax.swing.JFileChooser;
    import javax.swing.JOptionPane;
     
        class GestionCommence implements ActionListener { 
     
        	public void actionPerformed(ActionEvent contexte) { 
     
        		String caractere=" CIE   AV MV JV   NUVOL   DEP  ARR       NBHH      FDPNT          FDPNC";
        		String tab_origin;
        		String tab_1;
        		String  nom_fichier=null;  //nom du fichier à ouvrir
        		String nom_fichier2=null;   //nom du nouveau fichier qui sera créer
        		String nom_fichier3=null;
        		String nom="_traité.txt";     //nouvelle extension du fichier créer
        		boolean premierefois=true; //servira pour savoir si c'est la premiere fois que l'on écrit dans le nouveau fichier afin de coller avant le traitement les caractères CIE AV ...
     
        		boolean trouve=false;
        		//traitement pour offrir à l'utilisateur la possibilité de parcourir des dossiers afin de trouver le fichier à convertir
     
     
        		try{
     
        		String wd = System.getProperty("user.dir");
        		JFileChooser fc = new JFileChooser(wd);
        		int rc = fc.showDialog(null, "Choisir le fichier");
     
        		if (rc == JFileChooser.APPROVE_OPTION)
        		{
        		File file = fc.getSelectedFile();
        		 nom_fichier = file.getAbsolutePath();
     
     
        		}
     
        		String wd1 = System.getProperty("user.dir");
        		JFileChooser fc1 = new JFileChooser(wd1);
        		int rc1 = fc1.showDialog(null, "Choisir le fichier");
     
        		if (rc1 == JFileChooser.APPROVE_OPTION)
        		{
        		File file = fc1.getSelectedFile();
        		nom_fichier3 = file.getAbsolutePath();
     
     
        		}
     
     
     
        		//manipulation pour créer le nom du nouveau fichier
     
                nom_fichier2=nom_fichier.substring(0,nom_fichier.length()-4);
     
        		nom_fichier2=nom_fichier2.concat(nom);
     
     
     
     
     
     
        		//BufferedReader reader = new BufferedReader(new InputStreamReader( nom_fichier );
     
     
        			//String nomFichier = reader.readLine();
        			FileReader fr = new FileReader( nom_fichier );
        			BufferedReader br = new BufferedReader( fr );
        			String ligne = null;
     
        			//création du nouveau fichier
     
        			File fichier=new File(nom_fichier2);
        			fichier.createNewFile();
     
     
        			while( ( ligne = br.readLine() ) != null )
        			{
     
     
        				tab_origin=ligne;
     
        				//affectation de chaque ligne du fichier dans un tableau char pour pouvoir traiter l'information
     
        				char tab[]=new char[tab_origin.length()];
        				for (int i=0; i<tab_origin.length();i++)
     
        				{
     
        				tab[i]=tab_origin.charAt(i);
     
        				}		
     
     
     
        				char tab_final[]=new char[33];//création d'un tableau qui contiendra la ligne traité,tableau que l'on ecrira directement dans le nouveau fichier
     
        				tab_final[0]=' ';
        				tab_final[1]=tab[22];
        				tab_final[2]=tab[23];
     
        				tab_final[3]=' ';
        				tab_final[4]=' ';
        				tab_final[5]=' ';
        				tab_final[6]=' ';
     
        				tab_final[7]=tab[25];
        				tab_final[8]=tab[26];
     
        				tab_final[9]=' ';
     
     
        				tab_final[10]=tab[27];
        				tab_final[11]=tab[28];
     
        				tab_final[12]=' ';
     
     
        				tab_final[13]=tab[29];
        				tab_final[14]=tab[30];
     
        				tab_final[15]=' ';
        				tab_final[16]=' ';
        				tab_final[17]=' ';
     
        				tab_final[18]=tab[32];
        				tab_final[19]=tab[33];
        				tab_final[20]=tab[34];
        				tab_final[21]=tab[35];
     
        				tab_final[22]=' ';
        				tab_final[23]=' ';
        				tab_final[24]=' ';
        				tab_final[25]=' ';
     
        				tab_final[26]=tab[36];
        				tab_final[27]=tab[37];
        				tab_final[28]=tab[38];
     
        				tab_final[29]=' ';
        				tab_final[30]=' ';
     
        				tab_final[31]=tab[39];
        				tab_final[32]=tab[40];
        				tab_final[33]=tab[41];
     
     
     
     
     
        				//préparation pour ecrire le tab_final dans le fichier traité
     
        		        PrintWriter ecrivain;
     
     
     
     
        				//if(fichier.exists()==false)
        		       // {
     
     
     
     
     
        						ecrivain=new PrintWriter(new BufferedWriter (new FileWriter(nom_fichier2,true)));
        						ecrivain.println(tab_final);  //on écrit le tableau qui contient les données traitées dans chaque ligne du fichier
     
        						ecrivain.close();
     
     
     
     
     
     
     
     
     
     
        			}//fin de la boucle while qui fait le traitement ligne par ligne du fichier original
     
        			br.close();
     
     
     
        		}catch( IOException e )
        		{
        			JOptionPane.showMessageDialog(null, 
     
        	                "Problème inconnue lors de la lecture du fichier", "convertion", 
     
        	                JOptionPane.ERROR_MESSAGE); 
     
        			e.getMessage();
     
     
        		}	
     
        			try{
        			//on va ouvrir les deux fichiers et on va en creer un nouveau
     
     
        			  //ouverture du premier fichier
        			FileReader fr1 = new FileReader( nom_fichier2 );
        			BufferedReader br1 = new BufferedReader( fr1 );
        			String ligne1 = null;
     
        			//ouverture du deuxieme fichier
     
     
        			//je cree le dernier fichier qui contiendra tout
        			  File fichier_final=new File("/home/mehdi/Bureau/psss.txt");
        			  if(!fichier_final.createNewFile())
        				  System.out.println("okkkkkkkkkkkkkkkkkkkkkk");
     
        			  PrintWriter ecrivain;
     
     
        			  while( ( ligne1 = br1.readLine() ) != null )
          			{
     
        				  tab_1=ligne1;
     
          				//affectation de chaque ligne du fichier dans un tableau char pour pouvoir traiter l'information
     
          				char tab1[]=new char[tab_1.length()];
          				for (int i=0; i<tab_1.length();i++)
     
          				{
     
          				tab1[i]=tab_1.charAt(i);
     
          				}	
     
          				//je stocke ici le numéro de vol
          				char num_vol[]=new char[3];
     
          				     num_vol[0]=tab1[18];
          				     num_vol[1]=tab1[19];
          				     num_vol[2]=tab1[20];
     
          				    // System.out.println(num_vol);
          				   String vol=new String(num_vol);
     
     
          				 FileReader fr2 = new FileReader( nom_fichier3 );
             			BufferedReader br2 = new BufferedReader( fr2 );
             			String ligne2 = null;
     
          				   while( ( ligne2 = br2.readLine() ) != null  && trouve==false)
          	      			{
     
          					   if(ligne2.startsWith(vol))
          					   {
     
          						   trouve=true;
          						   ligne2=ligne2.substring(3,ligne2.length());
          						   ligne2=ligne2.trim();//j'elimine les espaces
     
          						   ligne1=ligne1+"        "+ligne2; //7 espaces pr le nombre dheures
     
     
          						  //je dois écrire cette ligne dans le dernier fichier
     
          						 char ligne11[]=new char[ligne1.length()];
          	      				for (int i=0; i<ligne1.length();i++)
     
          	      				{
     
          	      				ligne11[i]=ligne1.charAt(i);
     
          	      				}
     
          	      			if(premierefois==true)//si c est la premiere fois que l'on écrit il faudra mettre au début du fichier CIE AV MV...
    		        		{
    		        			premierefois=false;
     
    		        			//traitement pour pouvoir écrire directement CIE MV... dans le fichier
    		        			char caract[]=new char[caractere.length()];
    		        			for (int i=0; i<caractere.length();i++)
     
    		        			{
     
    		        			caract[i]=caractere.charAt(i);
     
    		        			}	
     
    		        			ecrivain=new PrintWriter(new BufferedWriter (new FileWriter("/home/mehdi/Bureau/psss.txt",true)));
    							ecrivain.println(caract); 
    							//ecrivain.println(tab_final);
    							ecrivain.println(ligne11);
    							ecrivain.close();
    							JOptionPane.showMessageDialog(null, 
     
    					                "Convertion et création du fichier avec succès(NOM_traité.txt) !", "convertion", 
     
    					                JOptionPane.INFORMATION_MESSAGE); 
     
    		        		}
    		        		else
    		        		{ 
     
     
          						ecrivain=new PrintWriter(new BufferedWriter (new FileWriter("/home/mehdi/Bureau/psss.txt",true)));
        						ecrivain.println(ligne11);  //on écrit le tableau qui contient les données traitées dans chaque ligne du fichier
     
        						ecrivain.close();
    		        		}	 
     
          					   }
     
     
     
     
          	      			}//fin du while qui parcout le deuxieme fichier
     
        				  //je remet le booleen a false
          				     trouve=false;
          				   br2.close();
     
     
     
          			}//fin du while qui parcourt le premier fichier
     
     
        			br1.close();
     
     
        			}catch( IOException e )
            		{
            			JOptionPane.showMessageDialog(null, 
     
            	                "Problème inconnue lors de la lecture du fichier", "convertion", 
     
            	                JOptionPane.ERROR_MESSAGE); 
     
            			e.getMessage();
     
     
            		}	
     
     
     
     
     
     
        }
     
     
     
     
     
     
     
     
     
     
     
     
        }
    Et voila ce que j'obtiens comme erreurs quand j'excecute le programme:

    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
    Exception in thread "AWT-EventQueue-0" java.lang.ArrayIndexOutOfBoundsException: 33
    	at GestionCommence.actionPerformed(GestionCommence.java:146)
    	at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2013)
    	at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2336)
    	at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:405)
    	at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:260)
    	at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:254)
    	at java.awt.Component.processMouseEvent(Component.java:6100)
    	at javax.swing.JComponent.processMouseEvent(JComponent.java:3288)
    	at java.awt.Component.processEvent(Component.java:5865)
    	at java.awt.Container.processEvent(Container.java:2110)
    	at java.awt.Component.dispatchEventImpl(Component.java:4461)
    	at java.awt.Container.dispatchEventImpl(Container.java:2168)
    	at java.awt.Component.dispatchEvent(Component.java:4287)
    	at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4466)
    	at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4130)
    	at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4060)
    	at java.awt.Container.dispatchEventImpl(Container.java:2154)
    	at java.awt.Window.dispatchEventImpl(Window.java:2555)
    	at java.awt.Component.dispatchEvent(Component.java:4287)
    	at java.awt.EventQueue.dispatchEvent(EventQueue.java:605)
    	at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:276)
    	at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:201)
    	at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:191)
    	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:186)
    	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:178)
    	at java.awt.EventDispatchThread.run(EventDispatchThread.java:139)
    J'ai des autres classes pour le graphique qu genre fenetre et gestion des événements!!

    S'il vous plait aidez moi

  2. #2
    Membre émérite
    Avatar de bpy1401
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mars 2003
    Messages
    511
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Eure (Haute Normandie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2003
    Messages : 511
    Par défaut
    Bonjour ramon.dekker

    Ton tableau tab_final est déclaré comme ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    char tab_final[]=new char[33];
    comme tu as 33 elements, les indices commencant à 0, si tu fait

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    tab_final[33]=tab[41];
    signifie que tu veux accéder au 34ieme élement du tableau qui n'existe pas. C'est donc normale que java ne soit pas content.
    Ton algorithme est faux
    désolé
    Page sur Developpez : http://pbriand.developpez.com

  3. #3
    Membre averti
    Inscrit en
    Mars 2008
    Messages
    35
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 35
    Par défaut
    Malheuresement l'erreur ne vient pas de la,car j'ai mis 34 mais ca ne donne toujours rien,je suis sure que c est à cause des try et catch je les HAIS ces deux la!!!

  4. #4
    Membre averti
    Inscrit en
    Mars 2008
    Messages
    35
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 35
    Par défaut
    L'erreur vient de la premiere partie du code j'en suis maitenant sur à 100%,car il y a un blocage la bas avec des exceptions.
    La deuxieme partie du programme fonctionne tres bien.

    Voici donc le code de la premiere partie:
    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
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    try{
     
     
     
        			String wd = System.getProperty("user.dir");
            		JFileChooser fc = new JFileChooser(wd);
            		int rc = fc.showDialog(null, "Choisir le fichier");
     
            		if (rc == JFileChooser.APPROVE_OPTION)
            		{
            		File file = fc.getSelectedFile();
            		 nom_fichier = file.getAbsolutePath();
     
     
            		}
     
     
     
        		//manipulation pour créer le nom du nouveau fichier
     
                nom_fichier2=nom_fichier.substring(0,nom_fichier.length()-4);
     
        		nom_fichier2=nom_fichier2.concat(nom);
     
     
     
     
     
     
        		//BufferedReader reader = new BufferedReader(new InputStreamReader( nom_fichier );
     
        		try
        		{
        			//String nomFichier = reader.readLine();
        			FileReader fr = new FileReader( nom_fichier );
        			BufferedReader br = new BufferedReader( fr );
        			String ligne = null;
     
        			//création du nouveau fichier
     
        			File fichier=new File(nom_fichier2);
        			fichier.createNewFile();
     
     
        			while( ( ligne = br.readLine() ) != null )
        			{
     
     
        				tab_origin=ligne;
     
        				//affectation de chaque ligne du fichier dans un tableau char pour pouvoir traiter l'information
     
        				char tab[]=new char[tab_origin.length()];
        				for (int i=0; i<tab_origin.length();i++)
     
        				{
     
        				tab[i]=tab_origin.charAt(i);
     
        				}		
     
     
     
        				char tab_final[]=new char[34];//création d'un tableau qui contiendra la ligne traité,tableau que l'on ecrira directement dans le nouveau fichier
     
        				tab_final[0]=' ';
        				tab_final[1]=tab[22];
        				tab_final[2]=tab[23];
     
        				tab_final[3]=' ';
        				tab_final[4]=' ';
        				tab_final[5]=' ';
        				tab_final[6]=' ';
     
        				tab_final[7]=tab[25];
        				tab_final[8]=tab[26];
     
        				tab_final[9]=' ';
     
     
        				tab_final[10]=tab[27];
        				tab_final[11]=tab[28];
     
        				tab_final[12]=' ';
     
     
        				tab_final[13]=tab[29];
        				tab_final[14]=tab[30];
     
        				tab_final[15]=' ';
        				tab_final[16]=' ';
        				tab_final[17]=' ';
     
        				tab_final[18]=tab[32];
        				tab_final[19]=tab[33];
        				tab_final[20]=tab[34];
        				tab_final[21]=tab[35];
     
        				tab_final[22]=' ';
        				tab_final[23]=' ';
        				tab_final[24]=' ';
        				tab_final[25]=' ';
     
        				tab_final[26]=tab[36];
        				tab_final[27]=tab[37];
        				tab_final[28]=tab[38];
     
        				tab_final[29]=' ';
        				tab_final[30]=' ';
     
        				tab_final[31]=tab[39];
        				tab_final[32]=tab[40];
        				tab_final[33]=tab[41];
     
     
        				//préparation pour ecrire le tab_final dans le fichier traité
     
        		        PrintWriter ecrivain;
     
     
     
     
        				//if(fichier.exists()==false)
        		       // {
        		        	try {
     
     
     
        						ecrivain=new PrintWriter(new BufferedWriter (new FileWriter(nom_fichier2,true)));
        						ecrivain.println(tab_final);  //on écrit le tableau qui contient les données traitées dans chaque ligne du fichier
     
        						ecrivain.close();
        		        		}
     
     
     
     
     
     
        		        	catch (IOException e) {
        						// TODO Auto-generated catch block
        						System.out.println( "Erreur lors de la création du fichier");
        					}
     
     
        			}//fin de la boucle while qui fait le traitement ligne par ligne du fichier original
     
     
     
     
        			br.close();
    Et voici les erreurs qu il me donnent quand il bloque en pleine compilation:
    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
    Exception in thread "AWT-EventQueue-0" java.lang.ArrayIndexOutOfBoundsException: 22
    	at GestionCommence.actionPerformed(GestionCommence.java:89)
    	at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2013)
    	at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2336)
    	at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:405)
    	at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:260)
    	at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:254)
    	at java.awt.Component.processMouseEvent(Component.java:6100)
    	at javax.swing.JComponent.processMouseEvent(JComponent.java:3288)
    	at java.awt.Component.processEvent(Component.java:5865)
    	at java.awt.Container.processEvent(Container.java:2110)
    	at java.awt.Component.dispatchEventImpl(Component.java:4461)
    	at java.awt.Container.dispatchEventImpl(Container.java:2168)
    	at java.awt.Component.dispatchEvent(Component.java:4287)
    	at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4466)
    	at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4130)
    	at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4060)
    	at java.awt.Container.dispatchEventImpl(Container.java:2154)
    	at java.awt.Window.dispatchEventImpl(Window.java:2555)
    	at java.awt.Component.dispatchEvent(Component.java:4287)
    	at java.awt.EventQueue.dispatchEvent(EventQueue.java:605)
    	at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:276)
    	at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:201)
    	at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:191)
    	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:186)
    	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:178)
    	at java.awt.EventDispatchThread.run(EventDispatchThread.java:139)
    Merci

  5. #5
    Membre Expert
    Avatar de CheryBen
    Inscrit en
    Mai 2005
    Messages
    1 599
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations forums :
    Inscription : Mai 2005
    Messages : 1 599
    Par défaut
    Tu déclares tab[] comme étant un tableau de char de longueur de la ligne lue. Et ensuite tu tentes d'accéder à tab[40], tab[41], etc... Mais si ta ligne est plus courte, cela va renvoyer une exception. Tu devrais au moins tester la longueur de la ligne lue.

  6. #6
    Membre averti
    Inscrit en
    Mars 2008
    Messages
    35
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 35
    Par défaut
    Non cheryben ce sont des lignes de longueur constantes,elles ne varient pas c est pour ça que je ne fais pas de test!

  7. #7
    Membre chevronné
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2008
    Messages
    328
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Mexique

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juin 2008
    Messages : 328
    Par défaut
    Bonjour,

    L'exception indique bien que c'est la ligne 146
    Exception in thread "AWT-EventQueue-0" java.lang.ArrayIndexOutOfBoundsException: 33
    at GestionCommence.actionPerformed(GestionCommence.java:146)
    Avec la dimension 33
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     char tab_final[]=new char[33];
    tu ne peux avoir que 33 éléments numérotés 0 à 32

    Après modification
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     char tab_final[]=new char[34];
    N'aurais-tu pas modifié
    en
    ?
    Je pense que non, mais...

    Cordialement.

    Dan

  8. #8
    Membre Expert
    Avatar de CheryBen
    Inscrit en
    Mai 2005
    Messages
    1 599
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations forums :
    Inscription : Mai 2005
    Messages : 1 599
    Par défaut
    L'exception a changé entre les 2 posts, maintenant elle arrive à la ligne 89 :
    Exception in thread "AWT-EventQueue-0" java.lang.ArrayIndexOutOfBoundsException: 22
    at GestionCommence.actionPerformed(GestionCommence.java:89)
    Et l'indice qui fait sortir du tableau est 22.
    Avec ça, tu devrais pouvoir trouver l'erreur.

  9. #9
    Membre chevronné
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2008
    Messages
    328
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Mexique

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juin 2008
    Messages : 328
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
                   char tab[]=new char[tab_origin.length()];
                   for (int i=0; i<tab_origin.length();i++)
     
                   {
     
                      tab[i]=tab_origin.charAt(i);
     
                   }
    pour être sûr ajoutes un print:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
     System.out.println("Longueur tab_origin = " + tab_origin.length());	
                   char tab[]=new char[tab_origin.length()];
                   for (int i=0; i<tab_origin.length();i++)
     
                   {
     
                      tab[i]=tab_origin.charAt(i);
     
                   }

  10. #10
    Membre averti
    Inscrit en
    Mars 2008
    Messages
    35
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 35
    Par défaut
    @cheryBen
    Le truc qui est bizarre c est que quand je met en commentaire le truc de l'erreur(indice 22 du tableau) il me sort une autre erreur juste en dessous et vice versa....
    En plus l'erreur ne vient pas de la car le résultat dans le nouveau fichier crée est juste,c est ca qui est bizarre!!!!!!
    En fait ,le programme fait son boulot jusqu'a la premiere partie mais apres il bugge,il s'arrete et les exceptions jaillissent!!!

    J ai testé le fameux tab_final[1]=tab[22]; où sois disant il y a une erreur en faisant un System.out.println,et bien je ne vois vraiment rien d'anormal,il affiche ce qu il devrait affiché parfois une lettre parfois un chiffre rien d'anormal!!!

  11. #11
    Membre Expert
    Avatar de CheryBen
    Inscrit en
    Mai 2005
    Messages
    1 599
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations forums :
    Inscription : Mai 2005
    Messages : 1 599
    Par défaut
    L'erreur vient forcément de la ligne indiquée dans l'exception.
    Forcément si tu la mets en commentaire, cette ligne n'est pas exécutée, l'exception n'a pas lieu, du coup le programme continu et il trouve une autre erreur ensuite.

    Essai de mettre des traces comme on te l'a indiqué (notamment l'affichage de la longueur de la ligne), si tu as des exceptions au début, forcément la suite ne se déroulera pas comme prévu.

  12. #12
    Membre averti
    Inscrit en
    Mars 2008
    Messages
    35
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 35
    Par défaut
    UN MERCI PLUS QU'ENORME A TOUT LE MONDE MERCI ET PLEIN DE BISOU!!!!
    J'explique le problème,j ai fait comme tu m'a dit cheryben j ai afficher la tailler de la chaine et ça me donnait partout 108,partout???tu en es sur???et bien non,à la dernière ligne il me mettait 1 et pourquoi donc?parce que mon fichier contenait un caractere sorti de nul par!!!! j'ai passé une nuit blanche à cause de ce maudit caractère

    Mais l'essentiel et que ça soit résolu encore une fois MERCI INFINIMENT je vais pouvoir donner l'application dans les temps,l'honneur est sauf!!!

  13. #13
    Membre éclairé
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Septembre 2006
    Messages
    572
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Septembre 2006
    Messages : 572
    Par défaut
    D'où l'interet de tester la taille de ta chaine avant d'essayer d'acceder à l'un de ses caractères.

  14. #14
    Membre chevronné
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2008
    Messages
    328
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Mexique

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juin 2008
    Messages : 328
    Par défaut
    Bonjour,


    Lors de la création d'un fichier, l'ultime enregistrement n'a pas forcement la taille spécifiée. C'est fonction par exemple du nombre de caractères frappés.
    Si par exemple je veux calculer le nombre d'enregistrements d'un fichier fic contenantant actuellement 10 enregs de 204 = 2040 et l'ultime de 50 (fonction de la frappe) = 2090 de longueur totale / 204 (taille enreg) = 10.2450 ====> nbEnregs = 11. (arrondi sup.) je dois en tenir compte:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    int nbEnregs = (int)Math.ceil((double)fic.length() / (double)tailleEnreg);
    NB

    Lors de l'ajout d'un nouvel enregistrement, celui-ci sera ajouté en tenant compte de la longueur (204) et heureusement l'ex dernier aura physiquement la bonne longueur, mais logiquement, les 50 caractères entrés. À son tour, le nouveau dernier aura la taille de la frappe etc...

    Tout celà pour dire (mal peut-être) que le maudit caractère ne vient pas de nulle part et qu'il faudrait voir le progamme de création ...

    Cordialement.

    Dan

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

Discussions similaires

  1. Probleme d exception
    Par L4BiN dans le forum API standards et tierces
    Réponses: 2
    Dernier message: 05/10/2007, 20h58
  2. [lineage][Exception] arrayindexoutofboundsexception
    Par OutBlast dans le forum Langage
    Réponses: 5
    Dernier message: 29/08/2006, 17h37
  3. [Reflexivite]exception ArrayIndexOutOfBoundsException methode invoke
    Par caro_a dans le forum API standards et tierces
    Réponses: 3
    Dernier message: 12/07/2006, 11h35
  4. Probleme d'exception : java.net.UnknownHostException
    Par kedare dans le forum Entrée/Sortie
    Réponses: 1
    Dernier message: 08/06/2006, 20h59
  5. probleme d'exception sur du void
    Par lkryss dans le forum Langage
    Réponses: 3
    Dernier message: 08/06/2006, 17h45

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