Chaîne de caractères

el_kun_aguero Messages postés 18 Statut Membre -  
el_kun_aguero Messages postés 18 Statut Membre -
Bonjour, en fait j'aimerai affecter à la variable " aux " la lettre saisi par l'utilisateur et la remplacé par le "-" de la variable "inconnu" mais j'ai pas vraiment d'idée pour faire ceci. Je sais que la ligne 30 de mon code n'est pas bon, j'aimerai juste qu'on me mette sur la bonne voie. Merci

Voici mon programme:

public static void main (String[] args) {

 // Initialisation des vvariables

 String mot = Generateur.unMot(), inconnu = "", aux= " ";  
 int i, j;
 char choix; 

 // mot: C'est le mot à trouver
 // inconnu: Ici cette variable représente les "-" lors du premier affichage du mot
 // choix: C'est la lettre choisi par l'utilisateur
 // aux: C'est une varaible auxillaire qui sera utilisé pour généré le mot à trouvé.


 //Affichage du mot 
  

 for ( i = 0; i <= mot.length()-1; i++) {
    
  inconnu = inconnu + " - ";
 }
 Ecran.afficherln(inconnu);
Ecran.afficherln("Saisir une lettre: ");
 choix = Clavier.saisirChar();

 for ( i = 0; i <= mot.length()-1; i++) {
    
  if ( choix == mot.charAt(i)){
      
   aux = choix + inconnu;
  }
    
  Ecran.afficher (aux);
 }
 
}
}
A voir également:

3 réponses

KX Messages postés 19031 Statut Modérateur 3 020
 
Je te conseilles de conserver dans ta variable inconnu le même nombre de caractères que dans ta variable mot :

String inconnu = "";

for (int i=0; i<mot.length(); i++)
    inconnu += "-";

Comme ça tu peux plus facilement faire la correspondance entre les deux mots car les charAt(i) correspondent à la même lettre, ça te permet de faire ceci :

String aux = "";

for (int i=0; i<mot.length(); i++ )
{
    if (mot.charAt(i)==choix)
        aux += choix;
    else
        aux += inconnu.charAt(i);
}

inconnu = aux;
La confiance n'exclut pas le contrôle
1
el_kun_aguero Messages postés 18 Statut Membre
 
Ah d'accord je vois, mais lors de l'affichage de "inconnu" le programme ne risque pas de rien m'afficher ?
0
KX Messages postés 19031 Statut Modérateur 3 020
 
Pourquoi il n'afficherai rien ? Il y a toujours des tirets dedans. La seule chose que j'ai enlevé ce sont les espaces.
0
el_kun_aguero Messages postés 18 Statut Membre
 
Non au début il affiche les tirets mais après la boucle "for" et le " inconnu = aux" je met un "Ecran.afficher( inconnu) " pour obtenir les tirets mais si la lettre choisi et dans le mot caché alors elle remplace un des tirets, mais ici rien ne se passe et je ne comprend pas.
0
KX Messages postés 19031 Statut Modérateur 3 020
 
Normalement ça doit bien se passer, voici le code complet pour tester :

class Ecran
{
    public static void afficherln(String inconnu)
    {
        System.out.println(inconnu);
    }
    
    public static void afficher(String aux)
    {
        System.out.print(aux);
    }
}

class Clavier
{
    private static java.util.Scanner scanner = new java.util.Scanner(System.in);
    
    public static char saisirChar()
    {
        return scanner.nextLine().charAt(0);
    }
}

class Generateur
{
    public static String unMot()
    {
        return "toto";
    }
}

public class Test
{
    public static void main(String[] args)
    {
        String mot = Generateur.unMot();
        
        String inconnu = "";
        for (int i = 0; i < mot.length(); i++ )
            inconnu += "-";
        Ecran.afficherln(inconnu);
        
        Ecran.afficher("Saisir une lettre : ");
        char choix = Clavier.saisirChar();
        
        String aux = "";
        for (int i = 0; i < mot.length(); i++ )
        {
            if (mot.charAt(i) == choix)
                aux += choix;
            else
                aux += inconnu.charAt(i);
        }
        inconnu = aux;
        Ecran.afficherln(inconnu);
    }
}
0
el_kun_aguero Messages postés 18 Statut Membre
 
C'est bizarre, c'est exactement ce que j'ai mis ... c'est surement scite qui me joue es tours. En tout cas merci, ça m'as beaucoup aider.
0