Je suis en train de charger un fichier CSV dans un tableau 2D, mais quand je vais l'appeler dans le principal je reçois l'erreurdéfaut de charge .csv dans un tableau 2d
Exception dans le thread « principal "java.lang.ArrayIndexOutOfBoundsException: 0
dans mon code alors que le fichier a une ligne suivante, il se sépare de la ligne, les stocke dans un tableau de chaînes qui, à son tour être déplacé vers le tableau 2D. Je ne comprends pas comment il peut y avoir une erreur. Quelqu'un veut-il expliquer ou suis-je juste très dense?
public int rows = 0;
public int cols = 0;
public String[][] filetable = new String[rows][cols];
public void set_Array(File example)
{
try
{
FileReader file = new FileReader(example);
Scanner sc = new Scanner(file);
if(sc.hasNextLine())
{
String[] tokens = sc.nextLine().split(",");
cols = tokens.length;
rows++;
}
while(sc.hasNextLine())
{
rows++;
sc.nextLine();
}
}
catch (FileNotFoundException e)
{
System.out.println(e);
}
}
public void to_Array(File example)
{
try
{
FileReader file = new FileReader(example);
Scanner sc = new Scanner(file);
int r = 0;
while(sc.hasNextLine())
{
String[] tokens = sc.nextLine().split(",");
for(int c = 0; c < cols; c++)
{filetable[r][c] = tokens[c];}
r++;
}
}
catch (FileNotFoundException e)
{
System.out.println(e);
}
}
Le problème est probablement avec 'filetable', mais vous ne nous montrez jamais comment' filetable' est configuré. De plus, vous dites que vous utilisez une autre méthode pour calculer 'cols', mais vous ne nous laissez pas savoir ce que c'est. Bottom line: vous ne nous avez pas donné assez d'informations pour vous aider. – ajb
Désolé! Va réparer ça maintenant! – JAVANOOB
Lorsque vous créez 'fichable',' rows' et 'cols' sont tous les deux 0, car' filetable' est créé lors de la construction de votre objet. Essayez d'assigner 'filetable = new String [rows] [cols];' après que 'rows' et' cols' ont été calculés. En outre, votre méthode nécessite de parcourir deux fois le fichier d'entrée entier, ce qui n'est pas idéal. L'utilisation d'un ArrayList vous aidera à créer un tableau dont la taille peut augmenter de façon dynamique, de sorte que vous n'avez pas à calculer le nombre de lignes. – ajb