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 -
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?
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:
- Séparer les mots d'une chaine de caractére
- Caractère ascii - Guide
- Caractère spéciaux - Guide
- Caractere speciaux - Guide
- Chaine tnt gratuite sur mobile - Guide
- Caractere vide - Guide
1 réponse
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 !
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).
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"); } }
lolita-01
Messages postés
90
Date d'inscription
Statut
Membre
Dernière intervention
merci beaucoup :)