Besoin d'aide urgente pour un programme finis avec une erreur
Résolu
javalex
-
javalex -
javalex -
Bonjour,
j'aurais besoin de votre aide pour un petit probleme...
Je dois rendre ce programme pour demain, il s'agit d'un pendu.
Voila le programme:
Quand je rentre un nombre de lettre X, le programme se déroule de la facon suivante:
Je peux rentrer mon mot, le nombre de lettre X et les lettres dans l'ordre.
Puis viens le tour du joueur 2, je rentre une lettre appuie sur entré et voila;
Compilation réussie !
Bienvenue au jeu du pendu, le premier joueur doit choisir un mot
!ATTENTION! Pour jouer il faut utiliser uniquement des lettres minuscules
C'est au deuxieme joueur de deviner le mot. Bonne chance !
Mot: _ _ _ _ _ _ _
Vous avez tapé a
Il vous reste 11 vies
-------------------
Erreur lors de l'exécution de la proglet
java.lang.ArrayIndexOutOfBoundsException: X ( le nombre de lettre )
.main(JvsToJavaTranslated22.java:57)
.run(JvsToJavaTranslated22.java:1)
-------------------
Il faut savoir que le programme marchait hier. Je n'ai apporté que de petites modifs,.. je n'en connais pas la cause.
Merci d'avance pour votre aide
j'aurais besoin de votre aide pour un petit probleme...
Je dois rendre ce programme pour demain, il s'agit d'un pendu.
Voila le programme:
void main(){ //Preambule println("Bienvenue au jeu du pendu, le premier joueur doit choisir un mot" ); println("!ATTENTION! Pour jouer il faut utiliser uniquement des lettres minuscules" ); //Joueur 1 String mot = readString("Entrez le mot:" ); int nblettre = readInteger("Combien de lettres comportent votre mot ?" ); int tableau[] = new int[nblettre+1]; for (int i=1; i<tableau.length;i++){ tableau[i]= readChar ("Entrez la lettre " + i + ":" ); } //Joueur 2 println("C'est au deuxieme joueur de deviner le mot. Bonne chance !" ); boolean[] boo = new boolean[nblettre]; int co=0; int vie=11; while(vie > 0 ){ co=0; String motecran = "Mot: "; for(;nblettre!= co;){ if (boo[co]){ motecran = motecran +mot.charAt(co)+" "; } else{ motecran = motecran +"_ "; } co++; } println(motecran); char lettre = readCharacter ("Entrez votre lettre :" ); String rep = ("Vous avez tapé " +lettre); println (rep); co=0; int ci=nblettre; while (ci != nblettre){ if (lettre == mot.charAt(co)) { boo[ci]=true; } else{ci=ci-1; } ci++; } if (ci==0){vie=vie-1;} if (vie >1 ){ println ("Il vous reste "+vie+" vies" ); } else{ println("Il vous reste "+vie+" vie" ); } boolean v= true; co=0; while(co!=nblettre){ if (boo[ci]==false){ v = false; } ci++; } if (v){ vie=-1;} } //Resultat if (vie == 0){ println ("MINCE ! Vous avez été pendu" ); println ("Il fallait trouver : "+mot);} if (vie == -1){ println ("BIEN JOUE ! C'est gagné" ); println (mot + (" était bien la solution" )); } }
Quand je rentre un nombre de lettre X, le programme se déroule de la facon suivante:
Je peux rentrer mon mot, le nombre de lettre X et les lettres dans l'ordre.
Puis viens le tour du joueur 2, je rentre une lettre appuie sur entré et voila;
Compilation réussie !
Bienvenue au jeu du pendu, le premier joueur doit choisir un mot
!ATTENTION! Pour jouer il faut utiliser uniquement des lettres minuscules
C'est au deuxieme joueur de deviner le mot. Bonne chance !
Mot: _ _ _ _ _ _ _
Vous avez tapé a
Il vous reste 11 vies
-------------------
Erreur lors de l'exécution de la proglet
java.lang.ArrayIndexOutOfBoundsException: X ( le nombre de lettre )
.main(JvsToJavaTranslated22.java:57)
.run(JvsToJavaTranslated22.java:1)
-------------------
Il faut savoir que le programme marchait hier. Je n'ai apporté que de petites modifs,.. je n'en connais pas la cause.
Merci d'avance pour votre aide
A voir également:
- Besoin d'aide urgente pour un programme finis avec une erreur
- Programme demarrage windows - Guide
- Mettre en veille un programme - Guide
- Forcer la fermeture d'un programme - Guide
- Cette action ne peut pas être réalisée car le fichier est ouvert dans un autre programme - Guide
- Desinstaller un programme - Guide
1 réponse
Bonjour,
Regardons donc ligne 57, on a un accès tableau
Je pense que tu voulais dire
La confiance n'exclut pas le contrôle
java.lang.ArrayIndexOutOfBoundsException: X ( le nombre de lettre )
.main(JvsToJavaTranslated22.java:57)
Regardons donc ligne 57, on a un accès tableau
boo[ci]or que vaut
ci? La dernière fois qu'il a été utilisé c'était ligne 39 et on avait
ci==nblettre(sinon on ne serait pas sorti de la boucle while), or
booa
nblettrecases numérotés de 0 à nblettre-1, donc nblettre est en dehors des limites autorisés (out of bounds en anglais) d'où l'erreur...
Je pense que tu voulais dire
if (boo[co]==false)et
co++;ligne 60.
La confiance n'exclut pas le contrôle
Quand je veux faire deviner par exemple le mot "aha" voila ce que j'ai:
Compilation réussie !
Bienvenue au jeu du pendu, le premier joueur doit choisir un mot
!ATTENTION! Pour jouer il faut utiliser uniquement des lettres minuscules
C'est au deuxieme joueur de deviner le mot. Bonne chance !
Mot: _ _ _
Vous avez tapé a
Il vous reste 11 vies
Mot: _ _ _
Vous avez tapé z
Il vous reste 11 vies
Mot: _ _ _
Vous avez tapé e
Il vous reste 11 vies
-------------------
Erreur lors de l'exécution de la proglet
java.lang.StringIndexOutOfBoundsException: String index out of range: 0
.main(JvsToJavaTranslated10.java:34)
.run(JvsToJavaTranslated10.java:1)
-------------------
Alors que j'ai bien demander un "a"
le code erreur a la fin est du au fait que j'ai arreter le programme.
comment faire svp ?...
Tu ne rentres jamais dans la boucle, donc tu arrives ligne 47 :
Là encore tu ne respectes pas la confition donc tu ne rentres pas dans le if, et tu boucles.
Merci beaucoup pour l'aide