Scanner, useDelimiter
Je rencontre un problème lors de l'utilisation de useDelimiter de la classe Scanner.
Scanner sc = new Scanner(System.in).useDelimiter("-");
while(sc.hasNext())
{
System.out.println(sc.next());
}
si j'ai cette entrée
A-B-C
la sortie sera
A B
et attendre jusqu'à ce que je tape dans un autre "-" pour imprimer le dernier caractère
Cependant si j'ai au lieu d'avoir de l'utilisateur des données d'entrée, et d'insérer une Chaîne de la radio plutôt que le code fonctionne. Quelle est la raison, et comment puis-je résoudre ce problème? Je ne veux pas utiliser StringTokenzier
OriginalL'auteur starcorn | 2010-08-16
Vous devez vous connecter pour publier un commentaire.
Si le
Scanner
n'attendez pas pour vous à entrer dans un autre-
alors il aurait tort de supposer que vous avez été fini de taper entrée.Ce que je veux dire, c'est la
Scanner
doit attendre pour vous à entrer dans un-
parce qu'il n'a aucun moyen de connaître la longueur de la prochaine entrée.Donc, si un utilisateur voulait type
A-B-CDE
et que vous avez arrêté de prendre une gorgée de café àC
, il woud pas obtenir la bonne entrée. (Vous vous attendez à[ A, B, CDE ]
mais il se[ A, B, C ]
)Lorsque vous passez en plein
String
,Scanner
sait où est la fin de l'entrée est, et n'a pas besoin d'attendre pour un autre délimiteur.Comment je pourrais faire il suit:
Vous aurez maintenant un tableau de
Strings
qui contiennent les données entre tous les-
s.Voici un lien vers le
String.split()
de la documentation pour votre plaisir de la lecture.Je vais vous montrer comment je ferai un edit.
vous avez seulement besoin de 1
Scanner
.ne sera pas de la Chaîne.split ajouter des espaces pour le tableau de Chaîne? J'ai de vague souvenir à l'aide de split avant.
pas de. Si vous avez la chaîne
"A-B-C-D".split("-")
vous obtenez le tableau["A","B","C","D"]
OriginalL'auteur jjnguy
Vous pourriez utiliser un autre délimiteur de chaîne de
useDelimiter( "-|\n" );
Il fonctionne avec un argument de type Chaîne ainsi que par la lecture de
System.in
.Dans le cas de l'installation.en cela exige que vous appuyez sur entrée à la fin de la ligne.
OriginalL'auteur stacker
Comment je pourrais faire il suit:
Vous aurez maintenant un tableau de
Strings
qui contiennent les données entre tous les-
s.OriginalL'auteur