Java.lang.ArrayIndexOutOfBoundsException: 5

Fermé
leilolene_0935 Messages postés 1 Date d'inscription vendredi 10 mai 2019 Statut Membre Dernière intervention 10 mai 2019 - 10 mai 2019 à 14:10
Fulsten Messages postés 211 Date d'inscription samedi 19 mars 2011 Statut Membre Dernière intervention 31 juillet 2020 - 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;

}

1 réponse

Fulsten Messages postés 211 Date d'inscription samedi 19 mars 2011 Statut Membre Dernière intervention 31 juillet 2020 55
Modifié le 10 mai 2019 à 16:25
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.
0