Erreur: java.lang.ArrayIndexOutOfBoundsExcept

Résolu
balotelli45 -  
arth Messages postés 9374 Date d'inscription   Statut Contributeur Dernière intervention   -
Bonjour, voila Mon Code:

import java.io.BufferedWriter;
import java.io.FileInputStream;
import java.io.FileWriter;
import java.io.InputStreamReader;
import java.io.LineNumberReader;
import java.io.PrintWriter;
import java.util.regex.*;


public class LireText {
	
	public static void main(String[] args){ 
	

	InputStreamReader flog = null;
	LineNumberReader llog = null; {
	String chaine = "";
	PrintWriter ficOut = null;
	
	String MyLine;
	try{
		flog = new InputStreamReader (new FileInputStream( "C:\\oraclexe\\XE\\Chargement_DWH.txt") );
		llog = new LineNumberReader (flog);
		
		 
		 while((MyLine = llog.readLine()) !=null) {
			 
			 //Affichage de la ligne lu depuis le fichier
			  
			 System.out.println("ligne :  " + MyLine);
			 //chaine = MyLine+"\n";
			 
			 int index=MyLine.indexOf("d'enregistrements logiques ");
			 
			 if (index > 0) { // si on trouve d'enregistrements logiques
				chaine+= MyLine + "|";
			 }
			 System.out.println("\n\nchaine= " + "\"" + chaine + "\"");
			 Pattern pattern = Pattern.compile("\\/");
			
			String[] tabGarder = pattern.split(chaine);
			   System.out.println("");
			   
			//Resultat
			   
			   
			   int lus = 0; 
	           int Rejetés = 0; 
	           String ligneOut = ""; 
	           String lGardee =  ""; 
	            
	              boolean append = true;
	             ficOut = new PrintWriter(new BufferedWriter(new FileWriter("out.txt,append")));

	                 
				    for(int i = 0; i < tabGarder.length; i++) {
				    	 String LGardee = tabGarder[i];
				    	System.out.println("lGardee: " + "\"" + LGardee + "\"");
				    	
				    }
				    
	             
			   String[] decompose = lGardee.split(" +"); // " +" au cas où il y aurait plus d'un espace entre les rubriques
			   lus = Integer.parseInt(decompose[6]); 
			   System.out.println("EnrLus = " + lus);
			   Rejetés = Integer.parseInt(decompose[6]); 
			   System.out.println("EnrRej = " + Rejetés);
			   ligneOut+= lus + " " + Rejetés; 
               ficOut.println(ligneOut); 
               ligneOut = ""; 
            } 
            
		  
            ficOut.close();
	             
				 
			 
		 }catch (Exception e){
			 e.printStackTrace();
			 System.err.println(" erreur : "+e.getMessage());
			 System.exit(1);
		 }
		 

}

} }  




Bonjour, j'ai une exception de type java.lang.ArrayIndexOutOfBoundsException
pouvez vous m'aider s'il vous plait, et merci a l'avance.

10 réponses

KX Messages postés 16761 Date d'inscription   Statut Modérateur Dernière intervention   3 020
 
Pour t'aider il faudrait au minimum savoir sur quelle ligne se déclenche l'exception, il serait également bon de savoir ce que contient le fichier Chargement_DWH.txt sur lequel tu fais la lecture.
0
balotelli45
 
Le Fichier chargement_DWH est un fichier de contrôle Oracle je veux extraire les valeurs de nombre de lignes lus et de nombre de ligne rejetées, alors j'ai lu le fichier et après j'ai voulu stocké les valeurs de ces 2 éléments dans un tableau dans un autre fichier txt que j'ai nommé out.txt voila, l'exception se declenche sur cette ligne: lus = Integer.parseInt(decompose[6]);
0
arth Messages postés 9374 Date d'inscription   Statut Contributeur Dernière intervention   1 293
 
"String[] decompose = lGardee.split(" +"); // " +" au cas où il y aurait plus d'un espace entre les rubriques
lus = Integer.parseInt(decompose[6]); "

Récupérer decompose[6] sans vérifier quel est sa taille, c'est un peu téméraire ;-)
0
balotelli45
 
s'il te plait le code, parce que je travail pas beaucoup avec le split et merci
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
arth Messages postés 9374 Date d'inscription   Statut Contributeur Dernière intervention   1 293
 
Comment ça le code?

On en sait rien nous c'est toi qui connaît le fichier.

SI le split ne renvoie pas plus de 6 éléments alors decompose[6] sera forcément OutOfBound.
0
balotelli45
 
voila les 2 lignes du fichier:
Nombre total d'enregistrements logiques lus : 61924
Nombre total d'enregistrements logiques rejetés : 1

je veux extraire les valeurs
et je suis vraiment désolé pour le déragement
0
arth Messages postés 9374 Date d'inscription   Statut Contributeur Dernière intervention   1 293
 
Perso je ferais :

flog = new InputStreamReader (new FileInputStream( "C:\\oraclexe\\XE\\Chargement_DWH.txt") );

while((MyLine = llog.readLine()) !=null)
{
if(MyLine.contains("enregistrements logiques lus"))
int nbLus = Integer.parseInt(MyLine.split(":")[1]);
else if(MyLine.contains("enregistrements logiques rejet"))
int nbRejets = Integer.parseInt(MyLine.split(":")[1]);
}

Et ensuite les écrire dans le fichier de sortie.

Et ensuite

0
balotelli45
 
Merci bien d'avoir pris le temps a me répondre c'est vraiment gentil de ta part arth
0
balotelli45
 
ça marche pas j'ai une exception de type java.lang.NumberFormatException sur la ligne : int nbLus = Integer.parseInt(MyLine.split(":")[1]);
0
arth Messages postés 9374 Date d'inscription   Statut Contributeur Dernière intervention   1 293
 
Essaie avec :

ligne : int nbLus = Integer.parseInt(MyLine.split(":")[1].trim());
0