2012-08-31 7 views
-2

Dans mon application de pendu je veux cacher un mot qui est supposé être deviné, avec "_" et j'ai finalement trouvé un site où quelqu'un explique comment faire cela, mais quand j'ai fusionné son code avec le mien, je semble obtenir des erreurs quand je le lance ...StringBuffer hangman

Ceci est le site où j'ai trouvé le code

http://www.jcreator.com/forums/index.php?showtopic=7761

et voilà comment j'essayé d'utiliser son code

StringBuffer original = new StringBuffer(readWord()); 
StringBuffer secret = new StringBuffer(hideWord()) ; 
StringBuffer hidden; 

public StringBuffer hideWord(){ 
    for (int i = 0; i < original.length(); i++){ 
     hidden.append("_ "); 
    } 
    hidden.deleteCharAt(hidden.length()-1); 
    return hidden; 
} 

public JButton getButton(final String text){ 
    final JButton button = new JButton(text); 
    button.addActionListener(new ActionListener(){ 
     public void actionPerformed(ActionEvent e){ 
      String s = button.getText(); 
      int index = original.indexOf(s); 
      if(index != -1){ 
       hidden.deleteCharAt(index*2); 
       hidden.insert(index *2, s); 
      } 
      else{ 
       JOptionPane.showMessageDialog(null, "There is no " + text); 
       error++; 
        if(error >= 0) imageName = "hangman1.jpg"; 
        if(error >= 1) imageName = "hangman2.jpg"; 
        if(error >= 2) imageName = "hangman3.jpg"; 
        if(error >= 3) imageName = "hangman4.jpg"; 
        if(error >= 4) imageName = "hangman5.jpg"; 
        if(error >= 5) imageName = "hangman6.jpg"; 
        if(error >= 7) imageName = "hangman7.jpg"; 
      } 
      } 
      }); 
      return button; 
} 

et semblent avoir un problème avec mon JLabel lors de l'affichage du mot si je l'ai changé .toString

JLabel word = new JLabel(secret.toString()); 

quelqu'un peut me dire s'il vous plaît wy mon application n » Je veux courir et si la façon dont j'ai fusionné le code est correcte?

+4

'" mais quand je fusionné son code avec le mien, il me semble qu'il y a des erreurs quand je le lance ... "': le problème est peut-être que vous essayez de "fusionner" le code car cela mène souvent au désastre. Ne fais pas ça. Au lieu de cela, utilisez les idées reçues de l'autre code et écrivez tout votre propre code, mais en utilisant ces idées. –

+1

Peut-être est-ce une continuation de votre [thread précédent] (http://stackoverflow.com/questions/12205223/hangman-masking-string-unhiding-character)? –

+2

Et dire que vous avez "un problème" n'aide pas vraiment à diagnostiquer quoi que ce soit. Qu'est-il arrivé? Qu'est-ce qui est différent entre ça et ce qui est censé arriver? Comment avez-vous essayé de résoudre la situation? Etc. –

Répondre

3

StringBuffer n'est pas un String.

Lorsque vous appelez new JLabel(secret) vous demandez au compilateur de trouver un constructeur de JLabel qui prend StringBuffer comme paramètre, où il n'y en a pas.

Comme HovercraftFullOfEels états, avant de mettre en œuvre tout le monde les idées d'autrui, de comprendre ce que ces idées sont et comment ils fonctionnent, non seulement bien vous obtenez de meilleurs résultats, vous allez devenir un meilleur développeur;)

+0

yikes, ... et 1+. –

+0

okay je comprends qu'un stringbuffer n'est pas une chaîne, mais apparemment il semble que la seule façon de pouvoir cacher une chaîne avec _ en utilisant une chaîne buffers à supprimer puis insérer la lettre correcte gussed ... Maintenant possible d'afficher un stringbuffer alors? –

+0

Eh bien, votre solution a fonctionné, n'est-ce pas? 'StringBuffer.toString()' va convertir le buffer interne 'StringBuffer' en objet' String'? 'StringBuffer' est un bon choix à utiliser si vous voulez faire beaucoup de modifications à une chaîne de caractères car il n'a pas les problèmes de mémoire associés à la manipulation d'un' String'. L'autre idée que j'avais était d'utiliser un 'JLabel' pour chaque personnage. Vous pouvez configurer une icône sympa lorsque la conjecture est utilisée (avec succès ou non), tout en ayant un "_" pour la conjecture restante. Juste une idée – MadProgrammer