Mesure de scanner d'entrée de longueur
Je veux un scanner qui va demander à l'utilisateur de saisir un caractère, cependant, si plus d'un caractère est saisi, il doit inviter l'utilisateur pour un seul caractère.
C'est ce que j'ai à ce jour:
System.out.print("(Player 2) Guess a letter: ");
Scanner letterScan = new Scanner(System.in);
while(letterScan.nextLine().length()>1)
{
System.out.print("(Player 2) Please guess only one letter: ");
//char inputLetter = letterScan.next().charAt(0);
}
char inputLetter = letterScan.next().charAt(0);
System.out.println("letter: " + inputLetter);
Le seul problème, c'est la sortie quand je le lance:
(Player 2) Guess a letter: asfa
(Player 2) Please guess only one letter: a
s
letter: s
Vous voir la troisième ligne? Il est demandé pour une autre invite. Je veux me débarrasser de cela et faire en sorte qu'il utilise la lettre dans la 2ème ligne de la sortie de la place. Des idées?
Vous devez vous connecter pour publier un commentaire.
La ligne
letterScan.next()
est la lecture d'un personnage supplémentaire après que vous obtenez votre bonne ligne. Vous devez enregistrer la première entrée de 1 caractère que vous recevez, comme suit:Également modifier votre boucle while pour vérifier uniquement l'entrée a de 1 caractère, sinon le joueur pourrait appuyez simplement sur entrée et votre code panne car l'entrée aurait 0 caractères. Le code ci-dessus n'est ce trop.
!=
, pas==
.>1
permet à la boucle de sortie si une chaîne de caractères de longueur 0 est entrée, ce qui signifie la prochaine ligne où vous de caractères de référence 0, va provoquer un crash. Essayez avec>1
, appuyez simplement sur retour sans entrée. Il va se planter pour ce cas, si vous n'utilisez pas!=1
son parce que cette ligne:
supprimer la ligne ci-dessus & modifier la présente déclaration:
à
Utiliser ce code... des Commentaires dans le code d'expliquer la réponse.
Précédemment vous
.next()
de nouveau pour passer à la nouvelle entrée, mais ici nous épargner vos commentaires, puis obtenir le premier caractère.