Java.lang.ArrayIndexOutOfBoundsException

Fermé
AHop Messages postés 22 Date d'inscription jeudi 18 mai 2017 Statut Membre Dernière intervention 24 mai 2017 - Modifié le 18 mai 2017 à 14:54
KX Messages postés 16733 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 janvier 2024 - 18 mai 2017 à 18:32



Bonjour j'arrive pas à détecter c'est quoi l'erreur







package calcul;



import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

public class A1 {
 static String Newligne = System.getProperty("line.separator");

 public static void main(String[] args) {

  String csvFile = "d:/new 1.txt";
  String csvFile1 = "d:/requests1.txt";

  List<LineFile> list;
  try {
   list = ListFromTXT(csvFile);

   TXTFromList(list, csvFile1);

   List<LineFile> list1 = ListFromTXT(csvFile1);

   for (int i = 0; i < list1.size(); i++) {

    LineFile lf = list1.get(i);
    System.out.println(lf.getAttribute3() + " + "
      + lf.getAttribute4() + " = " + lf.getAttribute9());
    
    System.out.println(lf.getAttribute3() + " + "
      + lf.getAttribute5() + " = " + lf.getAttribute10());
    
    System.out.println(lf.getAttribute5() + " + "
      + lf.getAttribute4() + " = " + lf.getAttribute11());

   }

  } catch (IOException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  }

 }

 public static void TXTFromList(List<LineFile> liste_files, String file_name)
   throws IOException {
  File fichier_clt = new File(file_name);

  BufferedWriter bufferedWriter = new BufferedWriter(new FileWriter(
    fichier_clt, true));

  for (LineFile lfile : liste_files) {

   String cont = "";
   cont = cont + lfile.getAid() + ",";
   cont = cont + lfile.getAttribute2() + ",";

   cont = cont + lfile.getAttribute3() + ",";

   cont = cont + lfile.getAttribute4() + ",";

   cont = cont + lfile.getAttribute5() + ",";
   cont = cont + lfile.getAttribute6() + ",";
   cont = cont + lfile.getAttribute7() + ",";
   cont = cont + lfile.getAttribute8() + ",";
   cont = cont + lfile.getAttribute9() + ",";
   cont = cont + lfile.getAttribute10() + ",";



   cont = cont + lfile.getAttribute11();

   cont = cont + Newligne;
   cont = cont + Newligne;
   cont = cont + Newligne;

   bufferedWriter.write(cont);
  }
  bufferedWriter.close();

 }

 public static List<LineFile> ListFromTXT(String file_name)
   throws IOException {
  BufferedReader br = null;
  String line = "";
  ArrayList<LineFile> files = new ArrayList<LineFile>();

  try {

   br = new BufferedReader(new FileReader(file_name));
   int cpt = 0;
   while ((line = br.readLine()) != null) {
    if (cpt > 0) {
     String[] ls = line.split(",");

     LineFile lineFile = new LineFile();
     lineFile.setAttribute1(ls[0]);
     lineFile.setAttribute2(ls[1]);
     lineFile.setAttribute3(ls[2]);
     lineFile.setAttribute4(ls[3]);
     lineFile.setAttribute5(ls[4]);
     lineFile.setAttribute6(ls[5]);
     lineFile.setAttribute7(ls[6]);
     lineFile.setAttribute8(ls[7]);


     //
     int att3 = Integer.parseInt(lineFile.getAttribute3());
     int att4 = Integer.parseInt(lineFile.getAttribute4());
     int att5 = Integer.parseInt(lineFile.getAttribute5());


     lineFile.setAttribute9(att3 + att4 + "");
     files.add(lineFile);
     
     

     lineFile.setAttribute10(att3 + att5 + "");
     files.add(lineFile);

     lineFile.setAttribute11(att5 + att4 + "");
     files.add(lineFile);
     
     
     
    }
    cpt++;

   }

   return files;
  } catch (FileNotFoundException e) {
   e.printStackTrace();
   return null;
  } catch (IOException e) {
   e.printStackTrace();
   return null;
  } finally {
   if (br != null) {
    try {
     br.close();
    } catch (IOException e) {
     e.printStackTrace();
     return null;
    }
   }
  }

 }

}



1 réponse

KX Messages postés 16733 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 janvier 2024 3 015
18 mai 2017 à 18:32
Bonjour,

À quelle ligne de code correspond la ligne 106 chez toi ?

Je pense que ça correspond à la ligne 110 sur le site :
lineFile.setAttribute2(ls[1]);


Ton exception signifie que
ls[1]
n'existe pas ce qui peut arriver quand
String[] ls = line.split(",");
renvoit un tableau avec une seule case, c'est à dire qu'il n'y a pas de virgule dans line...

Remarque : on pourrait pas mal simplifier ton code, d'une part sur la manière de traiter un fichier texte, d'autre part dans ta structure de LineFile, parce que setAttribute1,2,3...7,8 c'est trop compliqué, il te faut un tableau pour faire ça bien.
0