/ / findWithinHorizon continue à lire alors qu'il devrait échouer - java, analyse

findWithinHorizon continue à lire alors qu'il devrait échouer - java, analyse

Je "vois le code suivant pour analyser interactivement System.in pour les touches fléchées:

Scanner sc = new Scanner(System.in);
String str;
if ((str = sc.findWithinHorizon("\G\033\[C", 0)) != null)
System.out.println("RIGHT ARROW");
else if ((str = sc.findWithinHorizon("\G\033\[D", 0)) != null)
System.out.println("LEFT ARROW");

Quand j'appuie en premier sur la flèche de droite, tout va bien, mais lorsque j'appuie en premier sur celle de gauche, findWithinHorizon se bloque en attente de plus d'entrées alors qu'il devrait échouer et retourner à null.

Avec ce comportement, je ne vois pas comment utiliser cette technique pour programmer un analyseur syntaxique général.

Des indices?

merci Francesc

Réponses:

0 pour la réponse № 1

findWithinHorizon attend jusqu'à ce qu'il trouve quelque chose. Vous pouvez essayer le motif

\G\033\[C|\G\033\[D

et puis regardez le contenu des chaînes.


0 pour la réponse № 2

Le problème est que cela n’a pas d’échelle. Peut-être une meilleure solution serait-elle:

\G\033\[C|\G

au lieu de

\G33\[C

faire motif toujours correspondre et ensuite comparer les longueurs.

Toute autre alternative?