2016-12-13 1 views
0

J'essaye de créer un jeu de pendu mais je ne sais pas comment initialiser correctement le tableau d'affichage de mot, il donne une erreur ce tableau est censé imprimer des traits de soulignement pour des lettres du mot pour deviner puis les underscores se remplacés par des lettres qui ont été devinés par le joueurArrayIndexOutOfBoundsException dans le jeu du pendu

public class Hangman 
{ 
    static Scanner userInput = new Scanner(System.in); 

    public static void main(String args[]) 
    { 
     String strword = "wordo"; 
     char[] theWord = strword.toCharArray(); 
     int k = strword.length(); 
     int c; 

     char[] wordDisplay; 

     for(c=0;c<=k;c++) 
     { 
      wordDisplay[c] = '_'; 
     } 

     int hang = 0; 
     int i; 

     while(hang<k+10) 
     { 

      System.out.println("type a letter"); 

      for(i=0;i<5;i++) 
      { 
       System.out.print(wordDisplay[i]); 
      } 
      char userLetter = userInput.next().charAt(0); 
      for(i=0;i<=k;i++) 
      { 
       if(userLetter==theWord[i]) 
       { 
        System.out.println("a letter guessed"); 
        wordDisplay[i] = theWord[i]; 
       } 
       else 
       { 
        hang++; 
       } 
      } 


     } 
     System.out.println("you hang"); 
    } 

} 
+2

«cela donne une erreur», quelle erreur? – SomeJavaGuy

+0

Exception dans le fil "principal" java.lang.ArrayIndexOutOfBoundsException: 5 \t at test2.Hangman.main (Hangman.java:19) – coldman1

+3

Je suis sur le point d'écrire Q & A comment écrire un jeu de pendu en Java. – xenteros

Répondre

2

au lieu de

char[] wordDisplay; 

    for(c=0;c<=k;c++) 
    { 
     wordDisplay[c] = '_'; 
    } 

écrire:

char[] wordDisplay = new char[k+1]; 
    for(c=0;c<=k;c++) { 
     wordDisplay[c] = '_'; 
    } 

ou

char[] wordDisplay = new char[k]; 
    for(c=0;c<k;c++) { 
     wordDisplay[c] = '_'; 
    } 

Chaque objet en Java doit être initialisé.

+0

je l'ai fait et après je tape dans une lettre, il donne la même erreur – coldman1

+0

Exception dans le thread "principal" java.lang.ArrayIndexOutOfBoundsException: 5 \t à test2.Hangman.main (Hangman.java:35) – coldman1

+0

Nevermind I corrigé – coldman1

1

Initialiser votre tableau avec la longueur que vous avez

char[] wordDisplay = new char[k] 

et changer votre for à:

for(c=0;c<k;c++) 
    { 
    wordDisplay[c] = '_'; 
    } 

Gardez à l'esprit que votre premier indice est 0

+0

@coldcash envisage d'accepter/upvoting/both si elle a répondu à votre question afin que les autres soient au courant. –

-1

Vous avez non seulement déclare mais pour initialiser le tableau. Comme un tableau a une taille fixe, vous devez l'initialiser avec sa taille. Cela d'autre part est la longueur de la chaîne d'entrée. Ainsi, par exemple:

char[] wordDisplay = new char[k];