Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Ecriture d'un tableau dans un fichier

2 réponses
Avatar
BKCelia
Bonsoir,

un camarade et moi travaillons sur un projet scolaire, où nous devons faire des fichiers et des tableaux, voici la partie de notre code qui ne marche pas :

/////
Compteur = 1;
NouveauScore = readInt("Veuiller saisir le nouveau score :");
NouveauJoueur = readLine("Veuiller saisir votre nom :");

if(NouveauScore >Integer.valueOf(Scoretrie [9][0])) {
Scoretrie [9][0] = Integer.toString(NouveauScore);
Scoretrie [9][1] = NouveauJoueur;
try{
FileWriter fich = new FileWriter("Score.txt", true);
PrintWriter ASortie = new PrintWriter(fich);
for(k = 0; k<18; k++) {
int reste = Compteur % 2;
if(reste != 0){
ASortie.write(Scoretrie [NS][0]);
NS = NS + 1;
}
else {
ASortie.write(Scoretrie [NJ][1]);
NJ = NJ + 1;
}
}
ASortie.close();
}
catch (IOException e){
println("Erreur Traitement fichier:"+ e );
}
}
/////

Nous pensons qu'il y a peut-être un problème d'incompatibilité entre printwriter et write, mais nous ne savons pas comment le régler.
Les erreurs affichées dans la console sont les suivantes :

Exception in thread "Thread-3" java.lang.ArrayIndexOutOfBoundsException: 10
at ScoreComet.run(ScoreComet.java:202)
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)



Merci d'avoir lu jusqu'ici, en espérant que vous pourrez répondre à notre problème ^^

2 réponses

Avatar
David Larochette
Le 11/05/2020 à 22:09, BKCelia a écrit :
Bonsoir,
un camarade et moi travaillons sur un projet scolaire, où nous devons faire des
fichiers et des tableaux, voici la partie de notre code qui ne marche pas :
/////
Compteur = 1;
NouveauScore = readInt("Veuiller saisir le nouveau score :");
NouveauJoueur = readLine("Veuiller saisir votre nom :");
if(NouveauScore >Integer.valueOf(Scoretrie [9][0])) {
Scoretrie [9][0] = Integer.toString(NouveauScore);
Scoretrie [9][1] = NouveauJoueur;
try{
FileWriter fich = new FileWriter("Score.txt", true);
PrintWriter ASortie = new PrintWriter(fich);
for(k = 0; k<18; k++) {
int reste = Compteur % 2;
if(reste != 0){
ASortie.write(Scoretrie [NS][0]);
NS = NS + 1;
}
else {
ASortie.write(Scoretrie [NJ][1]);
NJ = NJ + 1;
}
}
ASortie.close();
}
catch (IOException e){
println("Erreur Traitement fichier:"+ e );
}
}
/////
Nous pensons qu'il y a peut-être un problème d'incompatibilité entre printwriter
et write, mais nous ne savons pas comment le régler.
Les erreurs affichées dans la console sont les suivantes :
Exception in thread "Thread-3" java.lang.ArrayIndexOutOfBoundsException: 10
at ScoreComet.run(ScoreComet.java:202)
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)
Merci d'avoir lu jusqu'ici, en espérant que vous pourrez répondre à notre
problème ^^

Je ne sais pas quelle est la ligne 202, mais il y a fort à parier qu'il
s'agit soit de
ASortie.write(Scoretrie [NS][0]);
soit de
ASortie.write(Scoretrie [NJ][1]);
avec la définition que tu nous avait donnée auparavant :
public static String[][] Scoretrie = new String[10][2];
Une hypothèse serait que NS et/ou NJ sont mal initialisées, auquel cas
leur valeur peut devenir inférieure à 0 ou supérieure à 9.
Pour plus de sécurité, tu pourrais aussi simplifier ta boucle en :
for (k = 0; k <= 9; k++) {
ASortie.write(Scoretrie [k][0]);
ASortie.write(Scoretrie [k][1]);
}
Avatar
bkcelia
Le mardi 12 Mai 2020 à 18:29 par David Larochette :
Le 11/05/2020 à 22:09, BKCelia a écrit :
Bonsoir,
un camarade et moi travaillons sur un projet scolaire, où nous devons
faire des
fichiers et des tableaux, voici la partie de notre code qui ne marche pas :
/////
Compteur = 1;
NouveauScore = readInt("Veuiller saisir le nouveau score :");
NouveauJoueur = readLine("Veuiller saisir votre nom :");
if(NouveauScore >Integer.valueOf(Scoretrie [9][0])) {
Scoretrie [9][0] = Integer.toString(NouveauScore);
Scoretrie [9][1] = NouveauJoueur;
try{
FileWriter fich = new FileWriter("Score.txt", true);
PrintWriter ASortie = new PrintWriter(fich);
for(k = 0; k<18; k++) {
int reste = Compteur % 2;
if(reste != 0){
ASortie.write(Scoretrie [NS][0]);
NS = NS + 1;
}
else {
ASortie.write(Scoretrie [NJ][1]);
NJ = NJ + 1;
}
}
ASortie.close();
}
catch (IOException e){
println("Erreur Traitement fichier:"+ e );
}
}
/////
Nous pensons qu'il y a peut-être un problème
d'incompatibilité entre printwriter
et write, mais nous ne savons pas comment le régler.
Les erreurs affichées dans la console sont les suivantes :
Exception in thread "Thread-3"
java.lang.ArrayIndexOutOfBoundsException: 10
at ScoreComet.run(ScoreComet.java:202)
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)
Merci d'avoir lu jusqu'ici, en espérant que vous pourrez
répondre à notre
problème ^^
Je ne sais pas quelle est la ligne 202, mais il y a fort à parier qu'il
s'agit soit de
ASortie.write(Scoretrie [NS][0]);
soit de
ASortie.write(Scoretrie [NJ][1]);
avec la définition que tu nous avait donnée auparavant :
public static String[][] Scoretrie = new String[10][2];
Une hypothèse serait que NS et/ou NJ sont mal initialisées,
auquel cas
leur valeur peut devenir inférieure à 0 ou supérieure
à 9.
Pour plus de sécurité, tu pourrais aussi simplifier ta boucle en
:
for (k = 0; k <= 9; k++) {
ASortie.write(Scoretrie [k][0]);
ASortie.write(Scoretrie [k][1]);
}
Merci pour votre réponse mais au final c'était juste une erreur bête de notre part, il manquais la ligne qui rajoutait au compteur +1 à chaque fois ^^