Java: chaine de caracteres

tipitou -  
 tipitou -
Bonjour,

Dans un programme j'utilise un " Scanner scan = new Scanner(System.in); " puis je voudrais demander d'entrer du texte sous forme de String. Le problème c'est que si j'utilise scan.nextLine() , et que je fais un copier-coller d'un paragraphe trouvé quelque part sur le net, il n'est pris en considération que la 1ere ligne (normal vous me direz vu que c'est un nextLine). Donc je cherche un moyen d'entrer n'importe quelle chaine. De plus après avoir collé un paragraphe, il y a un bug lorsque, un peu plus tard dans le programme, je demande d'entrer un int (alors qu'il n'apparait pas en écrivant un petit texte de quelques caractères normalement).

Merci de m'aider !
A voir également:

4 réponses

tipitou
 
Merci pour votre aide !

Cependant je n'y arrive toujours pas. J'ai essayé plein de codes possibles mais rien à faire !

Celui ci me paraissais le plus cohérent mais le sc.hasNextLine() est toujours true :

Scanner sc = new Scanner(System.in);
System.out.println("Entrez une chaine : ");
String str = sc.nextLine();
while (sc.hasNextLine()) {
str = str + " " + sc.nextLine();
}
System.out.println(str);

Merci de m'aider !
1
Pacorabanix Messages postés 4122 Date d'inscription   Statut Membre Dernière intervention   663
 
pour le bug : lorsque tu colle une chaine, en fait elle est dans un "buffer" (une mémoire tampon).

Chaque nextLine vide le tampon jusqu'au caractère de fin du ligne (plus ou moins).

Donc la prochaine fois que tu utilises les flux d'entrée pour demander un int, comme il y a déjà qqchose dans le Buffer, le programme va lire la dedans. Et comme c'est que du texte, bien évidemment que ça ne donne pas du tout le résultat que tu voulais.

Pour lire une texte entier, tu peux faire par exemple une petite fonction : une boucle qui "concatène" les différentes lignes. La boucle continue jusqu'à ce que le buffer soit vide, c-à-d jusqu'à ce que nextLine renvoie je-ne-plus-quoi (je ne suis plus sûr, il y a peut-être une fonction du scanner genre "isEmpty()" ou "eof()"). Cela résoudra du même coup ton bug pour l'entrée du int.
0
nobie-cs Messages postés 157 Statut Membre 17
 
tu peut utiliser une boucle avec la méthode Scanner.hasNextLine()
0
Pacorabanix Messages postés 4122 Date d'inscription   Statut Membre Dernière intervention   663
 
ahhh voilà merci hasNextLine() ! J'arrivais pas à m'en souvenir :P
0
nobie-cs Messages postés 157 Statut Membre 17
 
:) ta du demande a ton ami Google
0