Comment on crée un tableau à deux dimensions infini ?
Résolu
vilili6228
Messages postés
9
Date d'inscription
Statut
Membre
Dernière intervention
-
vilili6228 Messages postés 9 Date d'inscription Statut Membre Dernière intervention -
vilili6228 Messages postés 9 Date d'inscription Statut Membre Dernière intervention -
Bonjour à tous,
J'essaye de créer un tableau à deux dimensions en Java qui contient des chiffres, voici ce que j'ai fait :
Le problème est qu'il me retourne des erreurs que voici :
J'ai pensé que c'était dû au fait qu'il fallait imposer une longueur au tableau mais je ne suis pas sûr. Je n'ai pas trouvé de réponse en faisant quelques recherches. Je m'en remet à vous.
J'essaye de créer un tableau à deux dimensions en Java qui contient des chiffres, voici ce que j'ai fait :
public static Integer[][] lectureDistances(File fichier) throws IOException {
Integer distances[][] = {};
BufferedReader bufferEntree = new BufferedReader(new FileReader(fichier));
String ligne ;
StringTokenizer tokenizer ;
do {
ligne = bufferEntree.readLine ();
int i = 0;
int j = 0;
if (ligne != null) {
System.out.println(ligne.length());
tokenizer = new StringTokenizer(ligne, " ");
while (tokenizer.hasMoreElements()) {
distances[i][j] = Integer.parseInt(tokenizer.nextToken());
j += 1;
}
i += 1;
}
}
while (ligne != null );
bufferEntree.close();
return distances;
}
Le problème est qu'il me retourne des erreurs que voici :
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: Index 0 out of bounds for length 0
at com.example.appli/com.example.appli.Test_Scenario.lectureDistances(Test_Scenario.java:79)
at com.example.appli/com.example.appli.Test_Scenario.main(Test_Scenario.java:103)
J'ai pensé que c'était dû au fait qu'il fallait imposer une longueur au tableau mais je ne suis pas sûr. Je n'ai pas trouvé de réponse en faisant quelques recherches. Je m'en remet à vous.
Configuration: Windows / Chrome 101.0.4951.67
A voir également:
- Comment on crée un tableau à deux dimensions infini ?
- Tableau word - Guide
- Comment créer un groupe whatsapp - Guide
- Cree un compte google - Guide
- Trier un tableau excel - Guide
- Tableau ascii - Guide
1 réponse
Bonjour,
Pour initialiser un tableau il faudrait lui donner une taille, par exemple :
Mais le problème c'est qu'il faudrait savoir à l'avance quelle taille lui donner, dans ton cas il faudrait connaître le nombre de lignes du fichier ou a minima le nombre maximal de lignes que peut prendre le fichier.
En théorie, on peut faire un fichier.length qui renvoie la taille du fichier en octets, en supposant que ton fichier ne contienne que des saut de lignes, ça veut dire que le nombre de lignes (vides, certes) est au maximum égal à la taille du fichier.
Même principe pour déterminer la deuxième dimension du tableau, avec ligne.length() tu connais le nombre de caractères de la ligne, c'est le nombre maximum de nombre que tu peux avoir dans une ligne.
Remarque : en pratique, on n'utilise généralement pas les tableaux pour faire ce genre de traitements mais plutôt des List qui vont se redimensionner automatiquement au fur et à mesure que l'on ajoute des données dedans.
Integer distances[][] = {};que l'on écrit normalement
Integer[][] distances = {};est un tableau de tableaux qui ne contient rien, donc en vrai c'est un tableau à 0 dimension...
Pour initialiser un tableau il faudrait lui donner une taille, par exemple :
Integer[][] distances = new Integer[10][20];
Mais le problème c'est qu'il faudrait savoir à l'avance quelle taille lui donner, dans ton cas il faudrait connaître le nombre de lignes du fichier ou a minima le nombre maximal de lignes que peut prendre le fichier.
En théorie, on peut faire un fichier.length qui renvoie la taille du fichier en octets, en supposant que ton fichier ne contienne que des saut de lignes, ça veut dire que le nombre de lignes (vides, certes) est au maximum égal à la taille du fichier.
Même principe pour déterminer la deuxième dimension du tableau, avec ligne.length() tu connais le nombre de caractères de la ligne, c'est le nombre maximum de nombre que tu peux avoir dans une ligne.
Remarque : en pratique, on n'utilise généralement pas les tableaux pour faire ce genre de traitements mais plutôt des List qui vont se redimensionner automatiquement au fur et à mesure que l'on ajoute des données dedans.
vilili6228
Messages postés
9
Date d'inscription
Statut
Membre
Dernière intervention
Bonjour KX et merci pour ta réponse. Bon j'ai juste mis des valeurs larges entre les crochets tant pis si ça déborde. En tout cas ça marche !