Fichiers/Tableaux
Résolu/Fermé
A voir également:
- Fichiers/Tableaux
- Wetransfer gratuit fichiers lourd - Guide
- Tableaux croisés dynamiques - Guide
- Renommer plusieurs fichiers - Guide
- Explorateur de fichiers - Guide
- Fichiers bin - Guide
4 réponses
KX
Messages postés
16734
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
24 avril 2024
3 015
8 mai 2020 à 23:20
8 mai 2020 à 23:20
Bonjour,
Et quel est le problème ?
À la lecture du code, je pencherais pour une IndexOutOfBoundsException...
Les tableaux en Java sont indicés à partir de 0, pas 1. Donc pour un tableau de 2 cases il faut utiliser [0] et [1], mais [2] n'existe pas et plante.
Idem pour [NombreScore] et [NombreJoueur] qui doivent aller de 0 à 9.
Au passage, même si dans certains cas ça peut fonctionner, avec Scanner il faut utiliser hasNextLine() avec nextLine() et hasNext() avec next(), un mélange des deux peut entraîner des erreurs.
Et quel est le problème ?
À la lecture du code, je pencherais pour une IndexOutOfBoundsException...
Les tableaux en Java sont indicés à partir de 0, pas 1. Donc pour un tableau de 2 cases il faut utiliser [0] et [1], mais [2] n'existe pas et plante.
Idem pour [NombreScore] et [NombreJoueur] qui doivent aller de 0 à 9.
Au passage, même si dans certains cas ça peut fonctionner, avec Scanner il faut utiliser hasNextLine() avec nextLine() et hasNext() avec next(), un mélange des deux peut entraîner des erreurs.
Bonsoir,
Nous avons tenter de suivre vos conseils (car votre suggestion sur le problème était correct) et voici à quoi ressemble le programme désormais :
la même erreur s'affiche :
Nous avons tenter de suivre vos conseils (car votre suggestion sur le problème était correct) et voici à quoi ressemble le programme désormais :
import java.io.File; import java.io.IOException; import java.util.Scanner; import acm.program.ConsoleProgram; import acm.program.*; public class reset extends ConsoleProgram{ public void run(){ int Compteur = 1; int NombreScore=0; int NombreJoueur=0; int k; String [][] Score = new String [9] [1]; File fichier = new File("Score.txt"); try{ Scanner AEntree = new Scanner(fichier); while(AEntree.hasNextLine()){ int reste = Compteur % 2; if(reste != 0){ Score [NombreScore] [0] = AEntree.next(); NombreScore = NombreScore + 1; Compteur = Compteur + 1; } else { Score [NombreJoueur] [1] = AEntree.next(); NombreJoueur = NombreJoueur + 1; Compteur = Compteur + 1; } } AEntree.close(); } catch (IOException e){ println("Erreur Traitement fichier:"+ e ); } for(k = 0; k>9; k++) { println(Score[k][0] ); } } }
la même erreur s'affiche :
Exception in thread "Thread-3" java.lang.ArrayIndexOutOfBoundsException: 1 at reset.run(reset.java:27) at acm.program.Program.runHook(Program.java:1568) at acm.program.Program.startRun(Program.java:1557) at acm.program.AppletStarter.run(Program.java:1895) at java.lang.Thread.run(Unknown Source)
KX
Messages postés
16734
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
24 avril 2024
3 015
9 mai 2020 à 23:19
9 mai 2020 à 23:19
Pour la taille des tableaux il ne fallait rien changer, c'est bien [10][2] qu'il faut mettre, pas [9][1].
maintenant l'erreur est la suivante :
Exception in thread "Thread-3" java.lang.ArrayIndexOutOfBoundsException: 10
at reset.run(reset.java:22)
at acm.program.Program.runHook(Program.java:1568)
at acm.program.Program.startRun(Program.java:1557)
at acm.program.AppletStarter.run(Program.java:1895)
at java.lang.Thread.run(Unknown Source)
Exception in thread "Thread-3" java.lang.ArrayIndexOutOfBoundsException: 10
at reset.run(reset.java:22)
at acm.program.Program.runHook(Program.java:1568)
at acm.program.Program.startRun(Program.java:1557)
at acm.program.AppletStarter.run(Program.java:1895)
at java.lang.Thread.run(Unknown Source)
KX
Messages postés
16734
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
24 avril 2024
3 015
9 mai 2020 à 23:32
9 mai 2020 à 23:32
Dans le message "ArrayIndexOutOfBoundsException: 10", le 10 correspond à l'indice qui est utilisé, alors que l'on devrait seulement aller de 0 à 9 (pour un tableau de 10 cases).
Soit il y a trop de lignes dans le fichier, soit il est mal lu, par exemple à cause du mélange hasNext/nextLine dont j'avais également parlé.
Soit il y a trop de lignes dans le fichier, soit il est mal lu, par exemple à cause du mélange hasNext/nextLine dont j'avais également parlé.