J'utilise la classe scanner pour capturer l'entrée de l'utilisateur à partir de la ligne de commande (chaînes uniquement), comme alternative à ma précédente question.comment intercepter une entrée vide avec la classe de scanner en Java
La procédure suivante semble fonctionner correctement, sauf que les lignes vides ne sont pas interceptées comme elles le devraient par le second conditionnel. Par exemple, lorsque j'appuie sur Entrée, cela doit être capturé comme une ligne vide et le second conditionnel doit être vrai. Cependant une nouvelle ligne vide est affichée sur la console à chaque fois, avec toute la console "défilant" vers le haut si je continue à entrer, plutôt que la logique dans le conditionnel.
Existe-t-il un moyen approprié d'intercepter une entrée vide à partir de la ligne de commande à l'aide du scanner? (Quelqu'un frapper juste entrer, ou dans l'espace a frappé plusieurs fois, puis entrez)
Merci pour tout conseil
Machine aMachine = new Machine();
String select;
Scanner br = new Scanner(System.in);
while(aMachine.stillInUse()){
select = br.next();
if (Pattern.matches("[rqRQ1-6]", select.trim())) {
aMachine.getCommand(select.trim().toUpperCase()).execute(aMachine);
}
/*
* Ignore blank input lines and simply
* redisplay current status -- Scanner doesn't catch this
*/
else if(select.trim().isEmpty()){
aMachine.getStatus();
/*
* Everything else is treated
* as an invalid command
*/
else {
System.out.println(aMachine.badCommand()+select);
aMachine.getStatus();
}
}
j'espérais aussi demander si c'est la bonne façon de lire l'entrée de l'utilisateur à partir de la ligne de commande. Quel excpetion commun dois-je gérer par exemple? Merci pour toutes les explications – denchr
Pour être nitpicky, aucun de ce code ne lira à partir de la ligne de commande - vos arguments sont dans les arguments de main(). Mais vous parlez d'entrée standard. –