Séparer les mots d'une chaine de caractére

Résolu
lolita-01 Messages postés 90 Date d'inscription   Statut Membre Dernière intervention   -  
lolita-01 Messages postés 90 Date d'inscription   Statut Membre Dernière intervention   -
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?




A voir également:

1 réponse

KX Messages postés 16761 Date d'inscription   Statut Modérateur Dernière intervention   3 020
 
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
lolita-01 Messages postés 90 Date d'inscription   Statut Membre Dernière intervention  
 
merci beaucoup :)
0