Menu

Java.lang.ArrayIndexOutOfBoundsException: 5

Messages postés
1
Date d'inscription
vendredi 10 mai 2019
Statut
Membre
Dernière intervention
10 mai 2019
- - Dernière réponse : Fulsten
Messages postés
173
Date d'inscription
samedi 19 mars 2011
Statut
Membre
Dernière intervention
10 mai 2019
- 10 mai 2019 à 16:23
Bonjours..j'essai de lire des informations entre différents fichiers CSV mais j'ai cette erreur à l'exécution "java.lang.ArrayIndexOutOfBoundsException: 5" sur le navigateur. voiçi la fonction:


public String getValueTltLib(String g2r, String num_sect) {

String val = "";
String csvFile_Ocean_site = "D:/marco/Ocean/OCEAN_SITE.csv";
String csvFile_Ocean_Antenne = "D:/marco/Ocean/OCEAN_ANTENNE.csv";
String csvFile_Ocean_ModAnt = "D:/marco/Ocean/OCEAN_MODANT.csv";
String csvFile_Ocean_Tilt = "D:/marco/Ocean/OCEAN_TILTEL.csv";
String csvFile_Ocean_Systeme = "D:/marco/Ocean/OCEAN_SYSTEME.csv";

BufferedReader br = null;
BufferedReader cr = null;
BufferedReader dr = null;
BufferedReader er = null;
BufferedReader fr = null;

String line = "";
String cvsSplitBy = ",";

try {

br = new BufferedReader(new FileReader(csvFile_Ocean_site));
cr = new BufferedReader(new FileReader(csvFile_Ocean_Antenne));
dr = new BufferedReader(new FileReader(csvFile_Ocean_ModAnt));
er = new BufferedReader(new FileReader(csvFile_Ocean_Tilt));
fr = new BufferedReader(new FileReader(csvFile_Ocean_Systeme));

valueAntenneDTO newval = null;
////ocena site//ok
while ((line = br.readLine()) != null) {
String[] OCEAN_SITE = line.split(cvsSplitBy);

if (g2r.equals(OCEAN_SITE[5])) {

String valg2r = OCEAN_SITE[5];
String valsit_id = OCEAN_SITE[0];
System.out.println("Country [code= " + valg2r + " , name=" + valsit_id + "]");

newval = new valueAntenneDTO();
newval.setG2r(valg2r);
newval.setSit_id(valsit_id);
break;
}

}
//////////////fin ocean site

// ocan ant
while ((line = cr.readLine()) != null) {
String[] OCEAN_ANTENNE = line.split(cvsSplitBy);

if (newval.getSit_id().equals(OCEAN_ANTENNE[3])) {

String valnum_sect = OCEAN_ANTENNE[6];
String valId_ant = OCEAN_ANTENNE[0];

System.out.println("Country [code= " + valnum_sect + "name=" + valId_ant + "]");
if (num_sect.equals(valnum_sect)) {
newval.setNum_sect(valnum_sect);
newval.setAnt_id(valId_ant);
val = newval.getTilt_lib();
}

}

}
/////////fin ocean antenne

// ocan modAnt
while ((line = dr.readLine()) != null) {
String[] OCEAN_MODANT = line.split(cvsSplitBy);

if (newval.getAnt_id().equals(OCEAN_MODANT[5])) {
// use comma as separator
String valSYS_ID = OCEAN_MODANT[8];
String valTLT_ID = OCEAN_MODANT[24];

System.out.println("Country [code= " + valSYS_ID + "name=" + valTLT_ID + "]");
if (valSYS_ID.equals("5")) {
newval.setTilt_id(valTLT_ID);
}

}

}

while ((line = fr.readLine()) != null) {
String[] OCEAN_TILTEL = line.split(cvsSplitBy);

if (newval.getTilt_id().equals(OCEAN_TILTEL[0])) {

String valTLT_ID = OCEAN_TILTEL[0];
String valTLT_LIB = OCEAN_TILTEL[2];

System.out.println("Country [code= " + valTLT_ID + "name=" + valTLT_LIB + "]");

newval.setTilt_lib(valTLT_LIB);

}

}
//////fin osean tilt
System.out.println("g2r" + newval.getG2r());

System.out.println("ant_id" + newval.getAnt_id());
System.out.println("Num_sect" + newval.getNum_sect());
System.out.println("Sys_id" + newval.getSys_id());
System.out.println("Tilt_lib" + newval.getTilt_lib());

} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException ex) {
Logger.getLogger(OneAudit.class.getName()).log(Level.SEVERE, null, ex);
}

return val;

}
Afficher la suite 

Votre réponse

1 réponse

Messages postés
173
Date d'inscription
samedi 19 mars 2011
Statut
Membre
Dernière intervention
10 mai 2019
24
0
Merci
Bonjour,
Pour publier du code il faut utiliser les balises (Petit bouton code).
https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code

Cette erreur indique que vous essayez d’accéder à un endroit dans un tableau qui n'existe pas, trop loin. Normalement, le message indique la ligne du problème. Ici, je suppose que l'erreur vient des accès sur OCEAN_SITE[5] dans le if. Avant d'effectuer la demande d'accès, vous pouvez faire une vérification de la longueur du tableau pour savoir si vous n'allez pas en sortir. Peut être que le split juste avant ne trouve que 3 virgules, et donc vous n'aurez pas un tableau de taille suffisante pour faire une demande sur la cinquième case.
--
Fuls†en
Commenter la réponse de Fulsten