Chaîne de caractères

Fermé
el_kun_aguero Messages postés 16 Date d'inscription dimanche 17 novembre 2013 Statut Membre Dernière intervention 14 décembre 2013 - Modifié par pijaku le 28/11/2013 à 08:53
el_kun_aguero Messages postés 16 Date d'inscription dimanche 17 novembre 2013 Statut Membre Dernière intervention 14 décembre 2013 - 27 nov. 2013 à 23:22
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 16734 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 24 avril 2024 3 015
Modifié par KX le 27/11/2013 à 22:06
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 16 Date d'inscription dimanche 17 novembre 2013 Statut Membre Dernière intervention 14 décembre 2013
27 nov. 2013 à 22:45
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 16734 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 24 avril 2024 3 015
27 nov. 2013 à 22:48
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 16 Date d'inscription dimanche 17 novembre 2013 Statut Membre Dernière intervention 14 décembre 2013
27 nov. 2013 à 22:59
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 16734 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 24 avril 2024 3 015
27 nov. 2013 à 23:08
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 16 Date d'inscription dimanche 17 novembre 2013 Statut Membre Dernière intervention 14 décembre 2013
27 nov. 2013 à 23:22
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