Java.lang.ArrayIndexOutOfBoundsException

AHop Messages postés 22 Date d'inscription   Statut Membre Dernière intervention   -  
KX Messages postés 16761 Date d'inscription   Statut Modérateur Dernière intervention   -



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 16761 Date d'inscription   Statut Modérateur Dernière intervention   3 020
 
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