Séparer les mots d'une chaine de caractére [Résolu/Fermé]

Signaler
Messages postés
90
Date d'inscription
mercredi 5 janvier 2011
Statut
Membre
Dernière intervention
26 juillet 2013
-
Messages postés
90
Date d'inscription
mercredi 5 janvier 2011
Statut
Membre
Dernière intervention
26 juillet 2013
-
Bonsoir,
mon but est de séparer les mots d'une saisie par l'utlilisateur et retourner un chaine en fonction du mot j'ai donc trouver la ma fonction StringTokenizer , voila mon code
public static void main(String[] args) {

Scanner sc = new Scanner(System.in);
System.out.println("Donnez un chaine:");
String ch=sc.next();

StringTokenizer st = new StringTokenizer(ch);
while (st.hasMoreTokens()) {
System.out.println(st.nextToken() );
}
if(st.nextToken().contains("xx"))
System.out.println("ID");
else
System.out.println("aaaa");

}}

j'ai une erreur dans la boucle, quelqu'un peut m'aider svp?




1 réponse

Messages postés
16371
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
23 juillet 2021
2 856
Il n'y a pas d'erreur (de compilation) dans la boucle, mais j'imagine que ton if devrait être à l'intérieur de celle-ci, mais ce n'est pas le cas !

De plus tu ne peux pas consommer deux fois ton token. Si tu fais deux fois de suite st.nextToken() ce ne sera pas deux fois de suite la même valeur. Si tu fais un test st.hasNextToken pour le premier, tu dois aussi le faire pour le deuxième, ou alors tu veux utiliser deux fois de suite le même token, mais dans ces cas là il faut l'enregistrer !

public static void main(String[] args)
{
    Scanner sc = new Scanner(System.in);
    System.out.println("Donnez une chaine:");
    String ch=sc.nextLine();
    
    StringTokenizer st = new StringTokenizer(ch);
    
    while (st.hasMoreTokens())
    {
        String token = st.nextToken();
        System.out.println(token);
        
        if (token.contains("xx"))
            System.out.println("ID");
        else
            System.out.println("aaaa");
    }
}

Remarque : l'utilisation de StringTokenizer est déconseillée, il vaut mieux utiliser la méthode split, ou des expressions régulières (avec un Scanner par exemple).

public static void main(String[] args)
{
    System.out.print("Donnez une chaine : ");
    Scanner clavier= new Scanner(System.in);
    String str = clavier.nextLine();
    
    String[] tab = str.split("\\s");
    
    for (int i=0; i<tab.length; i++)
    {
        System.out.println(tab[i]);
        
        if (tab[i].contains("xx"))
            System.out.println("ID");
        else
            System.out.println("aaaa");
    }
}

public static void main(String[] args)
{
    System.out.print("Donnez une chaine : ");
    Scanner clavier = new Scanner(System.in);
    String str = clavier.nextLine();
    
    Scanner sc = new Scanner(str).useDelimiter("\\s");

    while (sc.hasNext())
    {
        String s = sc.next();
        System.out.println(s);
        
        if (s.contains("xx"))
            System.out.println("ID");
        else
            System.out.println("aaaa");
    }
}
1
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 65492 internautes nous ont dit merci ce mois-ci

Messages postés
90
Date d'inscription
mercredi 5 janvier 2011
Statut
Membre
Dernière intervention
26 juillet 2013

merci beaucoup :)